reactjs - 如何使用 react 导航在页面之间传递状态?

标签 reactjs react-native react-navigation

我正在尝试将状态从主页传递到详细信息页面。详细信息页面通过调用函数(通过 props)成功更改父状态。但是,不会触发重新渲染,并且详细信息页面不会更新(尽管它已正确更新 Prop )。如何将状态传递给子页面(详细信息),以便触发它重新渲染?

似乎有人问了类似的问题here 但我不太明白。我没有使用 redux,因为这是一个小应用程序。

//Navigator Setup
const AppNavigator = createStackNavigator({
    Home: {
        screen: Home} 
    Details: {
        screen: Details}
);

//Home page:
this.props.navigation.navigate("Details", {
    changeDetails: this.changeDetails
    details: this.state.details})
}

//Details page
let details = props.navigation.getParam("details", "n/a");
let changeDetails = props.navigation.getParam("changeDetails", "n/a");

//change things
//render stuff

最佳答案

使用navigation.navigate传递数据不会触发重新渲染,因为它传递的是 Prop 的副本。您将需要找到其他方式来发送 Prop ,以便您的组件了解更改。 例如,您可以将组件连接到 redux 状态(假设您正在使用 redux)。如果您没有使用 redux,您可以从父组件 navigate('Child', {fresh:freshFunction } 向 Child 发送刷新函数

然后,您可以在子级中访问此函数(通过诸如 this.props.navigation.state.params.refresh();const refresh() = this.props. navigation.getParam('regresh') ) 在后退操作之前。这将触发更新父状态以进行更新。

希望对你有帮助

关于reactjs - 如何使用 react 导航在页面之间传递状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54232541/

相关文章:

reactjs - 如何使用 React Native 将 React-Native-Linear-Gradient 应用于整个应用程序背景

javascript - 错误 : Couldn't register the navigator. 您是否使用 'NavigationContainer' 包装了您的应用程序?

ios - iOS 上显示键盘后如何固定标题?

reactjs - 您的测试套件必须至少包含一项测试

javascript - 如何使用 vanilla js 将包含样式标签的字符串按原样附加到文档头?

javascript - ES6 Import 破坏了 Gatsby Build : WebpackError: ReferenceError: Element is not defined

android - React Native Android 不包括一些内置组件和 API

javascript - 在 React Native 中授予权限

react-native - react native : use a variable string in the state like this : this. state.variableString

react-native - 如何在 React Native 的 Modal 组件上禁用 "Swipe down to close"?