私は反応しないネイティブと反応するナビゲーションを私のアプリで使っていますが、これまでのところうまくいっています。そのトリックは、screenProps
を一番下に通しています。
たとえば、私は詳細ビューを持っています。
export default class MoreExport extends Component {
static navigationOptions = {
title: "More"
}
render() {
return <MoreStack screenProps={this.props.screenProps} />;
}
}
:私はエクスポートするラッパークラスを作成
const MoreStack = StackNavigator({
More: {
screen: More
},
SubView1: {
screen: SubView1,
},
...
}, options);
そして:その後、私は、スタックを作成
class More extends Component {
render() {
return <something>
}
}
class SubView1 extends Component {...}
class SubView2 extends Component {...}
:私は、スタック内の2つのサブビューの基本的な詳細ビューを作成します
これがMore.jsにある場合は、More.jsからMoreをインポートし、それ以外の場所で使用することができます。
次に、screenPropsをルートビューに渡してから各レイヤーのラッパークラスを作成すると、screenPropsをすべて終了し、すべてのビューはthis.props.screenProps
を使用してアクセスできます。
上記のようなラッパーを各StackNavigatorとTabNavigatorの周りに使用し、screenPropsは一番下まで渡します。例えば
は、私のルートクラスのメソッドをレンダリングするには、私が行うことができます:
return <More screenProps={{prop1: something, prop2: somethingElse}} />
そしてMoreStackでより多くのクラスと、各サブビューは、これらすべての小道具へのアクセスを持っているでしょうし。
詳細をご希望の場合はお気軽にお問い合わせください。
免責事項:これはそれを行うには正しいか、推奨される方法であれば、私は知りませんが、それは、私はもっと周りを見回したsteffeydevに触発された後
あなたのコードの 'Home'と' TaskForm'は兄弟です。あなたが他の州の状態を変更したい場合は、共通の祖先がその状態を共有する必要があります。あなたの場合は 'PluralTodo'です。おそらくPluralTodoのrenderメソッドの中で 'StackNavigator'関数を呼び出してナビを初期化し、そこにハンドラ/状態を渡すことができます – azium
それはまさに問題です。私はハンドラを渡す方法がわからず、そこには – mfilimonov
のようなものがありますか? – azium