0
登録された画面コンポーネントから現在のナビゲーション状態を取得できる必要があります。私はnavigation.state
オブジェクト内にroutes
オブジェクトを見つけることを期待しましたが、そこにはありません。私は次のようにルートコンポーネントを設定することでこれを実現することができましたが、これは畳み込まれているように見えますが、これを達成するにはよりクリーンな方法が必要だと思っています。リアクションナビゲーション画面の現在のナビゲーション状態を取得する
App.js
import React, {Component} from 'react'
import {Tabs} from './components/Routes'
import {NavigationActions} from 'react-navigation'
export default class App extends React.Component {
state = {
navState: null
}
componentDidMount(){
const initState = Tabs.router.getStateForAction(NavigationActions.init())
this.getState(null, initState);
}
getState = (prevState, newState) => {
let activeIndex = newState.index
let navState = newState.routes[activeIndex]
this.setState({navState})
}
render() {
return (
<Tabs
onNavigationStateChange={this.getState}
screenProps={{navState: this.state.navState}}/>
)
}
}
これは、しかし、それは時にアプリを初期化するナビゲーション状態を取得する方法をカバーしていない、素晴らしいです。これは可能ですか? – Samuel
componentDidMount(){アラート(this.props.navigation.state.key)}はあなたのために機能しますか? –
あなたが何を意味するか分からないので、ナビゲーションアクションがディスパッチされる前にルートコンポーネントで最初のナビゲーション状態を取得する必要があります。これは、私の例で 'const initState = Tabs.router.getStateForAction(NavigationActions.init())'がやっていることです。 'onNavigationStateChange'は、プロペラ名が示唆するようにナビゲーション状態が変化したときにのみ起動します。 – Samuel