RN - Navigation
11648 ワード
Navigation actions are handled by current navigator and bubble up if couldn't be handled#
ホーム構成部品の「Feed」と「Messages」に移動します.ナビゲーション()はTabです.Navigatorを使用して、FeedからHomeコンポーネントに移動した場合にナビゲートします.navide()を使用する場合、stack.Navigatorのnavigator()が使用されます.(自動快適)
別のstackのinitialScreenではなく、別のstackのscreenにナビゲートする場合は、特定のscreenにナビゲートする必要があります。
前例
Here, you might want to navigate to the Root stack from your Home component:
navigation.navigate('Root', { screen: 'Settings' });
最初のパラメータはstack、2番目の{screen:行きたい画面}を書けばいいですポップアップとモードの違い
ポップアップウィンドウ:ウィンドウ+ウィンドウ、ウィンドウの上のウィンドウ.
最近は使いません.ユーザー・ハラスメント
「モード」は既存のウィンドウにレイヤーを追加します.軽くてよく、エンコードより少し時間がかかるポップアップウィンドウです.
ソース:https://bomango.tistory.com/57
?? double question mark
let data =null;
const foo = data ?? 'default string';
console.log(foo);
//결과 : "default string"
?? 左側のデータがnullの場合、右側の値を返すことを指定します.nullでない場合は、データ値が割り当てられます.
ネストされたナビゲーション構造と親ナビゲーションに見出しがある場合に注意してください。
-> stack
-->(child)stackが子stackにナビゲート()すると、親stackのタイトルは変更されません.
親スタックが移動していないため...(サブスタックナビゲーションが呼び出されました()
titleだけでなくgoBack buttonも生成しません.(同じ理由で)
->したがって、ヘッダーを必要としないページ(分類する場合はサブページ)にはgoBackボタンのヘッダーが必要です.title変更を「簡単に」処理するには、親スタック(論理構造ではサブページの分類であっても)でページ(論理)を生成することが望ましいです.
touchableWithoutFeedbackインポートに注意してください
import {
TouchableWithoutFeedback
} from 'react-native';
vs
import {TouchableWithoutFeedback
} from
'react-native-gesture-handler';
주의: rn gesture 사용시 css 다깨짐
テキストのtextAlign=「center」などが無効な場合
上流ビューに100%widthを与えない場合、下流
<Text>
コンポーネントはプロジェクトサイズと同じサイズのみを指定するため、自身のalignプロパティtextAlignを使用できません.下のtextにborderWidth:1の枠線を付けると、文字の周りだけがスペースになります.
コードはこうです
ご覧のように、MenuTextのtextAlign="left"属性が与えられている場合、
親構成部品は
<></>
に閉じられているため、widthはプロジェクトサイズとしてちょうど指定されています.だから、
width:100%
を包装器であげたら?適用されます.
textAlignやjustifyContentなどのプロパティを使用する場合は、親divラベルに100%のビュー幅が指定されていることを確認します.
ネイティブのAndroidキーボードによる画面変更→キーボードがUIを破る場合
サイズ変更->Panの調整(下記)
出典:https://gran007.tistory.com/entry/応答-ネイティブ応答-ネイティブ-アンドロイド-キーボードキーボード-画面-変更[JLE'sBlog]
空白領域をクリックしてキーボードを離す
<TouchableWithoutFeedback onPress={Keyborad.dismiss} > </...
は使えますが無理(?)上のようにchildでviewを覆います.
つまり
しかし
<Touchable..>
<View>...마이컴포넌트.. </View>
</Touchable..>
そうするとUIが破壊されますしたがって、flex:1は
<View style={{flex : 1}}> </..
で指定する必要があります.https://github.com/facebook/react-native/issues/10180
reduceの使い方(最新のcreateSlice)
1.createSliceを使用してname、initialstate、reducersを作成します.
2つのexport、xxxxがあります.減速機とxxxx.action;
ユーザセレクタ()の原理
ユーザセレクタの原理は以下のように検索される.
userSelectorは、関数構成部品のレンダリングとaction dispatchで動作します.
アクションが送信された場合、userSelectorは以前の結果値を比較します.
[再レンダリングを強制するのは、異なる場合のみです]
すなわち、上記の手順を簡単に順番に整理すると、
1.reduxを使用したい位置
dispatch(액션함수())
このように呼び出すとex)dispatch(setUser(id));
2.dispatch起動後、setuserを呼び出すとreduceモジュールとなります.tsセクションでexport const useSlice = createSlice({
.....
reducer:{
setUser(state,action){
state.id = action.payload.id;
}}
})
示すように、Reducerはid値を変更し、アプリケーションの完全なストレージ領域のステータス値を変更します.const state = useSelector((state) => state.user.id);
functional 컴포넌트
から状態値の比較を開始する.ここ(state)は正確にはstoreを指す.(次のソースから見ると、userSelectorのパラメータstateはstore値と見なすべきである)、すなわちstoreの変更stateである.user.これはid値を確認し、関数素子ページ全体を再レンダリングする原理です.id値が変わらなければ、再レンダリングは行われません.const {id, name} = useSelector((state) => state.user);
id、nameがオブジェクトを作成するように受信された場合その他減速機
const bleState = useSelector((state) => state.bluetooth)
前述したように、Bluetooth Riduserの値を変更してもid、nameの素子はRinderingとなります.これは、オブジェクトの作成方法が新しい作成方法であるため、値を比較する前にオブジェクトが異なるアドレス値で識別されるためです.したがって、他のreduceの値を変化させたくない場合は、
迎えに行くときは必ず離れろ!(Don't useオブジェクト構造の割り当て方法!)
これで使えます.
const id = useSelector((state) => state.user);
const name = useSelector((state) => state.user);
https://velog.io/@seungsang00/210406TIL#useselector-%EC%9E%91%EB%8F%99%EC%9B%90%EB%A6%AC 保護者=>children素子がpropsを受信すると、オブジェクトの構造化プロセスが混同されます。オブジェクトの実数
propsオブジェクトのサブコンポーネントから取得されるため、{}でよく使用されるオブジェクト構造化プロセスが混同されやすい.
Reference
この問題について(RN - Navigation), 我々は、より多くの情報をここで見つけました https://velog.io/@adguy/RN-Navigationテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol