React Native Router Flux componentDidMount在错误的组件中触发

时间:2016-04-13 18:05:42

标签: react-native

我有一个警告要触发组件的componentDitMount,它不是初始路由(在本例中是MainHome)。但是当加载另一个初始组件(MySchedule)时,它会显示警报。路线是:

export default class Example extends React.Component {
    render() {
        return <Router createReducer={reducerCreate}>
            <Scene key="modal" component={Modal} >
                <Scene key="root" hideNavBar={true}>
                    <Scene key="tabbar" component={NavigationDrawer}>
                        <Scene key="main" tabs={true} default="tab2" >
                            <Scene key="my_schedule" component={MySchedule} hideTabBar={true} navBar={NavBar} initial={true} />
                            <Scene key="intro" component={Initial} hideTabBar={true} navBar={NavBar} />
                            <Scene key="home" component={Home} hideTabBar={true} navBar={NavBar} />
                            <Scene key="main_home" component={MainHome} hideTabBar={true} navBar={NavBar} />
                        </Scene>
                    </Scene>
                </Scene>
                <Scene key="error" component={Error}/>
            </Scene>
        </Router>;
    }
}

在组件MainHome的componentDidMount中,会触发警报。

componentDidMount() {
    Alert.alert(
        '“Welcome...',
        [
            {text: 'OK'}
        ]
    );
}

所以在初始组件中(在这种情况下是MySchedule)不应该显示警报但是它确实存在,我无法弄清楚原因。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这就是NavigationView的工作原理。

 <View
    style={this.props.style}>
    {this.props.navigationState.children.map(this._renderScene)}
  </View>

NavigationExperimental正在改变很多,所以这可能会改变。

请参阅https://github.com/facebook/react-native/issues/6579