Open4
React & React Native
React
環境構築
こっちも参考にする
Lintエラー
型とか
Lint設定とか
React Native
*Dockerfilleの名前がF→fにする
propsでの関数の受け取り
useRef
React Native
アーキテクチャ
新しくフォルダを作成後None of these files exist
が発生するが、下記で解決
expo start -c
もしくは
react-native start --reset-cache
androidの高さ調整
@expo/vector-iconsのアイコン名を型安全に扱う
routerの型宣言(typescript)
この辺参考に色々弄ってみた。動いているが正しいのか!?
import React from 'react'
import { NavigationContainer, RouteProp } from '@react-navigation/native'
import { createStackNavigator} from '@react-navigation/stack'
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'
import { FontAwesome } from '@expo/vector-icons'
import NewsScreen from './screens/NewsScreen'
import DetailScreen from './screens/DetailScreen'
import WeatherScreen from './screens/WeatherScreen'
const Stack = createStackNavigator()
const Tab = createBottomTabNavigator()
type GlyphNames = React.ComponentProps<typeof FontAwesome>['name']
type Route = RouteProp<Record<string, object | undefined>, string>
const newsStack = () => {
return (
<Stack.Navigator>
<Stack.Screen name="ニュース" component={NewsScreen} />
<Stack.Screen name="詳細ページ" component={DetailScreen} />
</Stack.Navigator>
)
}
const weatherStack = () => {
return (
<Stack.Navigator>
<Stack.Screen name="天気予報" component={WeatherScreen} />
</Stack.Navigator>
)
}
const screenOptions = ({ route }: { route: Route }) => ({
tabBarIcon: ({ color, size }: { color: string, size: number}) => {
let iconName: GlyphNames | undefined
if (route.name === 'ニュース') {
iconName = 'newspaper-o'
} else if (route.name === '天気予報') {
iconName = 'sun-o'
}
return <FontAwesome name={iconName} size={size} color={color} />
}
})
function App() {
return (
<NavigationContainer>
<Tab.Navigator screenOptions={screenOptions}>
<Stack.Screen name="ニュース" component={newsStack} />
<Stack.Screen name="天気予報" component={weatherStack} />
</Tab.Navigator>
</NavigationContainer>
);
}
export default App;
フォントのアウトライン
下部固定ボタンを置く
文字列を読み上げる
useEffectのasync/await使用方法