【问题标题】:Assigning vs setting params in React Navigation在 React Navigation 中分配与设置参数
【发布时间】:2017-10-09 17:27:15
【问题描述】:

通过赋值来改变 React-Navigation 的参数值是否合适:

navigation.state.params.number = 123;

而不是设置它:

navigation.setParams({ number: 123 });

我注意到第一种方式是同步的,这意味着我可以console.log(number)下一行并获得分配的新值,而第二种方式是异步的,这意味着如果我在下一行console.log(number),我会得到旧值。

我需要在下一行访问该值的原因是 state.params 在我的应用程序中保存了搜索输入,我调用 action creator 在下一行执行搜索,因此必须在打电话。

所以,问题又来了。以这种方式更改值是否正确?

【问题讨论】:

    标签: react-native redux react-navigation


    【解决方案1】:

    如果您需要在下一行分配的参数值,那么您可以直接使用分配给参数的变量,而不是从参数中读取它。

    let someValue = 'Foo';
    
    navigation.setParams({ Bar: someValue });
    console.log(someValue);
    

    setParams 用于设置屏幕参数,并使用您设置的参数更新navigationState。如果您直接设置它,它将无法正常工作。如果您需要在设置后立即设置的参数,我认为您的逻辑可能不太理想。

    【讨论】:

    • 很公平。由于我的应用程序的逻辑需要维护与屏幕无关的参数,但与组件的通信(导航时)相关,我一直在努力解决 state.params 中保留什么样的值的问题。感谢您的帮助!