reactjs - 如何使用反应导航在页面之间传递状态?
问题描述
我正在尝试将状态从主页传递到详细信息页面。详情页通过调用函数(通过props)成功改变父状态。但是,不会触发重新渲染,也不会更新详细信息页面(尽管它已正确更新了道具)。如何将状态传递给子页面(详细信息),以便触发它重新呈现?
似乎在这里提出了类似的问题, 但我不太明白。我没有使用 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
不会触发重新渲染,因为它正在传递道具的副本。您将需要找到另一种发送道具的方式,以便您的组件了解更改。例如,您可以将您的组件连接到您的 redux 状态(假设您使用的是 redux)。如果你没有使用 redux,你可以从你的父组件发送一个刷新函数navigate('Child', { refresh: refreshFunction }
到子组件
然后,您可以在后退操作之前在孩子中访问此功能(通过类似this.props.navigation.state.params.refresh();
or )。const refresh() = this.props.navigation.getParam('regresh')
这将触发更新父状态以进行更新。
我希望这对你有帮助
推荐阅读
- android - 在android flow + room中,如何监控一个Flow列表
- javascript - 使用 ajax 调用从 JSON 获取数据到 HTML 表
- haskell - 比较记录的字段
- java - 有什么方法可以避免在 android embed realmobject 中出现重复?
- asp.net-web-api - 谁能告诉我如何在主键类型为 uniqueidentifier 的 sql server 中编写更新存储过程?
- sql - 阻止插入操作并在 oracle 中记录对另一个审计表的尝试
- python - 如何在pygame中改变蛇头方向?
- python - Pygame TypeError: rect 参数无效 - python 速成课程
- sql - SELECT DISTINCT 不正确的名称
- javascript - 请解释javascript函数代码行的逻辑