在 React Navigation 中分配与设置参数
Assigning vs setting params in React Navigation
通过赋值改变 React-Navigation 的参数值是否正确:
navigation.state.params.number = 123;
而不是设置它:
navigation.setParams({ number: 123 });
我注意到第一种方式是同步的,这意味着我可以 console.log(number)
下一行并获取分配的新值,而第二种方式是异步的,这意味着如果我 console.log(number)
下一行,我将得到旧值。
我需要在下一行访问该值的原因是 state.params
在我的应用程序中保存搜索输入,我调用 action creator 在下一行执行搜索,因此它必须在通话前更新。
那么,问题又来了。这样改值合适吗?
如果您需要在下一行分配的参数值,那么您可以直接使用分配给参数的变量,而不是从参数中读取它。
let someValue = 'Foo';
navigation.setParams({ Bar: someValue });
console.log(someValue);
setParams
用于设置屏幕参数,它会使用您设置的参数更新 navigationState
。如果您直接设置它,它将无法正常工作。如果您需要在设置后立即设置的参数,我认为您的逻辑可能不太理想。
通过赋值改变 React-Navigation 的参数值是否正确:
navigation.state.params.number = 123;
而不是设置它:
navigation.setParams({ number: 123 });
我注意到第一种方式是同步的,这意味着我可以 console.log(number)
下一行并获取分配的新值,而第二种方式是异步的,这意味着如果我 console.log(number)
下一行,我将得到旧值。
我需要在下一行访问该值的原因是 state.params
在我的应用程序中保存搜索输入,我调用 action creator 在下一行执行搜索,因此它必须在通话前更新。
那么,问题又来了。这样改值合适吗?
如果您需要在下一行分配的参数值,那么您可以直接使用分配给参数的变量,而不是从参数中读取它。
let someValue = 'Foo';
navigation.setParams({ Bar: someValue });
console.log(someValue);
setParams
用于设置屏幕参数,它会使用您设置的参数更新 navigationState
。如果您直接设置它,它将无法正常工作。如果您需要在设置后立即设置的参数,我认为您的逻辑可能不太理想。