React Navigation(正式文書参照を学習中)
15054 ワード
反応ナビゲーションのインストールと使用方法について説明します.公式文書や書籍を参考にしました.
以下の番号順は、本書getstart順に記入します.これからもっと熟知して、一つ一つ整理し直すつもりです.
まず、すべての基礎コンテンツとガイドのTab navigationが主な目標です.
そして読書を続ける
正式な書類
https://reactnavigation.org/docs/getting-started
getting startedプロジェクト の作成反作用ナビゲーション取付 応答ナビゲーションに依存するライブラリのインストール
(公式ファイルによると、ライブラリをインストールするときに警告が出る可能性があります.私のアプリケーションが構築されている限り、無視できます.) ReactNative 0.6からliningが自動的にインストールされます.したがってreact-ネイティブリンクをインストールする必要はありません.しかし,Macユーザはios環境にpodsをインストールして開発する必要がある. アンドロイドデバイスで正常に動作するために、依存ライブラリとしてインストールされているreact-ネイティブ-screensにはもう1つ設定する必要があります.MainActivity.java. ファイルを見つけて、MainActivity class bodyセクションにコードを追加する必要があります.
このセクションを設定した理由は、本書で次のとおりです.
This change is required to avoid crashes related to View state being not persisted consistently across Activity restarts. ナビゲーションを行います.jsまたはindex.jsで設定すべきです. Webブラウザのようにhistoryを使用するためにstack navigatorライブラリをインストールします. createNativeStackNavigatorの使用
createNativeStackNavigator関数を使用して、ScreenとNavigatorをキーとするオブジェクトを返します.この2つはナビゲーションを構成しています.NavigatorでScreenを囲みます.
スタックナビゲータの正式なドキュメント
https://reactnavigation.org/docs/native-stack-navigator/ Stack.Screenは、propsとしてname、component、optionsを使用します.完全なオプションを指定する場合は、NavigatorでscreenOptionsを使用します.options={title:[overView]}この設定で画面タイトルの名前を変更できます.上の2つの道具はどこで使うのは更に少し学ぶ必要があります stack.screenで使用されるコンポーネントはnavigationpropsを受信することができる.
数式ドキュメントのナビゲート
https://reactnavigation.org/docs/navigation-prop/
navigation.naving(「detail」)に入った状態で再びdetailに入ると、何も起こらない.しかしナビゲーション.pushを使用すると、追加の画面が表示されます.
StackNavigatorが生成したタイトルはgoです.背舵がある.スタックが消えると自動的に消えます.
navideの2番目のパラメータにデータを渡すことができます.構成部品からルーティングします.params受信として、受信したデータはJSONでなければなりません.stringgifyがおすすめです.以下の理由を参考にしてください. state persistence - https://reactnavigation.org/docs/state-persistence
deep linking -
https://reactnavigation.org/docs/deep-linking navigation.setParamsでParamsを変更できます.
setParamsでscreen option titleを交換できませんsetOptionsを使用して置き換えます.
詳細については、「文書」を参照してください.
https://reactnavigation.org/docs/navigation-prop#setparams Stack.Screenで初期paramsを設定できます.
ちょっとReaction DefaultPropsみたいな感じ naving、gobackを使用してデータを後方に転送することもできます.正式ドキュメント転送parameters to routionsでさようなら. ネストされたナビゲータにデータを転送
https://reactnavigation.org/docs/nesting-navigators paramsをデータ転送に使用しないでください.次の使用例を参照して、正式なドキュメントを表示します. この子もここで探してみましょう.
https://reactnavigation.org/docs/params
thtitleでparamsを使う(彼は理解していない)
https://reactnavigation.org/docs/headers
navigation.setOptionsに設定したオプションのタイトルを変更できます.
スタイルをoptionsやheaderStyleなどに変更できます
Stack.NavigatorのscreenOptionsプロパティを使用して、タイトルスタイル全体を変更できます.イメージとかを入れたいなら?次のコード を参照してください.ヘッダーにボタンの作成、後退ボタンのカスタマイズ、上書き
https://reactnavigation.org/docs/header-buttons ネイバーからbecontinueをもう一度見ます
以下の番号順は、本書getstart順に記入します.これからもっと熟知して、一つ一つ整理し直すつもりです.
まず、すべての基礎コンテンツとガイドのTab navigationが主な目標です.
そして読書を続ける
正式な書類
https://reactnavigation.org/docs/getting-started
getting started
npx react-native init LearnReactNative
yarn add @react-navigation/native
(公式ファイルによると、ライブラリをインストールするときに警告が出る可能性があります.私のアプリケーションが構築されている限り、無視できます.)
yarn add react-native-screens react-native-safe-area-context
npx pod-install ios
또는
cd ios
pod install
このセクションを設定した理由は、本書で次のとおりです.
This change is required to avoid crashes related to View state being not persisted consistently across Activity restarts.
경로
android/app/src/main/java/<your package name>/MainActivity.java.
추가할 코드
import android.os.Bundle; // 최상단에
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(null);
}
NavigationContainerを適用してimport * as React from 'react';
import { NavigationContainer } from '@react-navigation/native';
export default function App() {
return (
<NavigationContainer>{/* Rest of your app code */}</NavigationContainer>
);
}
yarn add @react-navigation/native-stack
createNativeStackNavigator関数を使用して、ScreenとNavigatorをキーとするオブジェクトを返します.この2つはナビゲーションを構成しています.NavigatorでScreenを囲みます.
スタックナビゲータの正式なドキュメント
https://reactnavigation.org/docs/native-stack-navigator/
// In App.js in a new project
import * as React from 'react';
import { View, Text } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
function HomeScreen() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Home Screen</Text>
</View>
);
}
const Stack = createNativeStackNavigator();
function App() {
return (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Home" component={HomeScreen} />
</Stack.Navigator>
</NavigationContainer>
);
}
export default App;
数式ドキュメントのナビゲート
https://reactnavigation.org/docs/navigation-prop/
navigation.naving(「detail」)に入った状態で再びdetailに入ると、何も起こらない.しかしナビゲーション.pushを使用すると、追加の画面が表示されます.
StackNavigatorが生成したタイトルはgoです.背舵がある.スタックが消えると自動的に消えます.
deep linking -
https://reactnavigation.org/docs/deep-linking
We recommend that the params you pass are
JSON-serializable.
That way, you'll be able to use state persistence
and your screen components will have the right contract
for implementing deep linking.
setParamsでscreen option titleを交換できませんsetOptionsを使用して置き換えます.
詳細については、「文書」を参照してください.
https://reactnavigation.org/docs/navigation-prop#setparams
ちょっとReaction DefaultPropsみたいな感じ
<Stack.Screen
name="Details"
component={DetailsScreen}
initialParams={{ itemId: 42 }}
/>
function HomeScreen({ navigation, route }) {
React.useEffect(() => {
if (route.params?.post) {
// Post updated, do something with `route.params.post`
// For example, send the post to the server
}
}, [route.params?.post]);
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Button
title="Create post"
onPress={() => navigation.navigate('CreatePost')}
/>
<Text style={{ margin: 10 }}>Post: {route.params?.post}</Text>
</View>
);
}
function CreatePostScreen({ navigation, route }) {
const [postText, setPostText] = React.useState('');
return (
<>
<TextInput
multiline
placeholder="What's on your mind?"
style={{ height: 200, padding: 10, backgroundColor: 'white' }}
value={postText}
onChangeText={setPostText}
/>
<Button
title="Done"
onPress={() => {
// Pass and merge params back to home screen
// 뒤로 전달할때는 네비게이터에 이렇게 전달하는게 핵심인듯 하다.
navigation.navigate({
name: 'Home',
params: { post: postText },
merge: true,
});
}}
/>
</>
);
}
https://reactnavigation.org/docs/nesting-navigators
https://reactnavigation.org/docs/params
// Don't do this 이렇게 사용 노노
navigation.navigate('Profile', {
user: {
id: 'jane',
firstName: 'Jane',
lastName: 'Done',
age: 25,
},
});
// Some examples of what should be in params are: 사용예시
1.Ds like user id, item id etc., e.g.
navigation.navigate('Profile', { userId: 'Jane' })
2. Params for sorting, filtering data etc.
when you have a list of items, e.g.
navigation.navigate('Feeds', { sortBy: 'latest' })
3. Timestamps, page numbers or cursors for pagination, e.g.
navigation.navigate('Chat', { beforeTime: 1603897152675 })
4. Data to fill inputs on a screen to compose something, e.g.
navigation.navigate('ComposeTweet', { title: 'Hello world!' })
thtitleでparamsを使う(彼は理解していない)
https://reactnavigation.org/docs/headers
navigation.setOptionsに設定したオプションのタイトルを変更できます.
スタイルをoptionsやheaderStyleなどに変更できます
function LogoTitle() {
return (
<Image
style={{ width: 50, height: 50 }}
source={require('@expo/snack-static/react-native-logo.png')}
/>
);
}
function StackScreen() {
return (
<Stack.Navigator>
<Stack.Screen
name="Home"
component={HomeScreen}
options={{ headerTitle: (props) => <LogoTitle {...props} /> }}
/>
</Stack.Navigator>
);
}
https://reactnavigation.org/docs/header-buttons
Reference
この問題について(React Navigation(正式文書参照を学習中)), 我々は、より多くの情報をここで見つけました https://velog.io/@choel0304/TIL-React-Navigationテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol