首页 > 解决方案 > 从导航道具设置初始状态

问题描述

我正在使用React Navigation在屏幕之间进行路由。我有一个初始屏幕,其中包含FlatList我在传递这样的参数时路由到新屏幕的项目的 onclick。

props.navigation.navigate('Details', {
    id: props.id,
    title: props.title
});

Details屏幕中,我可以使用以下代码接收它,但是考虑到它是静态函数并且我无权访问this.setState().

static navigationOptions = ({navigation}) => {
    const {params} = navigation.state;

    console.log(params);
};

标签: reactjsreact-nativereact-native-androidreact-navigationreact-native-navigation

解决方案


这将允许您在构造函数中处理它,这是以前放置在 componentWillMount 中的任何东西可以去的另一个位置。

constructor(props) {
    super(props)
    this.state = {
        params: props.navigation.state.params
    }
}

作为参考,通过将 props 作为参数传递给构造函数,然后在它们上运行超级函数,您可以在调用任何其他生命周期函数之前设置初始状态或运行其他一次性函数。


推荐阅读