我总是想将参数传递给StackNavigator中的一个组件。如果我的组件是StackNavigator中加载的第一个组件,这似乎不起作用。这是一些说明问题的代码。
在日志中,您可以看到组件B已加载两次。第一次加载时不带参数。
为x86构建的Android SDK:呈现方式:未定义
为x86构建的Android SDK:使用以下方式呈现:►{数据:“来自A”}
此外,如果您单击设备后退按钮,则会返回带有未定义参数的屏幕。
所以有两个问题:
以下是在博览会小吃中运行的代码:https://snack.expo.io/@bdzim/navigate-to-tab-from-parent
class A extends React.Component {
render() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Button
title="This is A. Press to go to B"
onPress={() => this.props.navigation.navigate(
'B', { data: 'from A' }
)}
/>
</View>
);
}
}
class B extends React.Component {
render() {
console.log('rendering with: ', this.props.navigation.state.params)
let params = JSON.stringify(this.props.navigation.state.params)
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>
params: {params}
</Text>
<Button
title="This is.. B! Press to go to A"
onPress={() => this.props.navigation.navigate('A')}
/>
</View>
);
}
}
const Stacks = StackNavigator({ B })
const Tabs = TabNavigator({ A, Stacks });