现在要将参数传递到另一个屏幕,我使用以下命令:
this.props.navigation.navigate('MyWatchList', {watchLists: response});
这将自动导航到另一个屏幕。我试图传递参数到另一个屏幕没有导航远离屏幕,但我有麻烦弄清楚如何做到这一点。我一直在尝试使用setParams,但我一直没有成功。任何帮助或指出正确的方向将不胜感激。
你可以考虑使用asyncStorage来在你的屏幕之间共享数据。
如
AsyncStorage.setItem('MyWatchList',JSON.stringify({watchLists: response}));
和使用
检索AsyncStorage.getItem('MyWatchList').then(item => {
const list = JSON.parse(item);
...
});
你也可以使用EventRegister
import { EventRegister } from "react-native-event-listeners";
像这样发送值:
<TouchableOpacity
onPress={() => {this.setState({ visibleModal: false });
EventRegister.emit("changeModalEvent", this.state.visibleModal);
}}
>
{this.state.theme == true ? (
<Icon3 name="cancel" color={Colors.night_color_text} size={30} />
) : (
<Image
source={require("../assets/images/Auto_Layout_Horizontal.png")}
style={{ height: 24, width: 24 }}
/>
)}
</TouchableOpacity>
读取任何屏幕中关于键的值,如下所示:
useEffect(() => {
let eventListner = EventRegister.addEventListener(
"changeModalEvent",
(data) => {
// console.log({ data });
setVisibleModal(data);
}
);
return () => {
EventRegister.removeEventListener(eventListner)
};
});
我认为你试图实现的是跨屏幕的持久状态你可以通过多种方式做到这一点你可以使用全局变量,你可以从你所有的类/函数中对它们进行读写。更多信息请点击
如何使用全局变量在React Native?
但是最有效的方法是使用redux来管理你的状态
Redux是一个开源的JavaScript库集中应用程序状态。
你可以将你的数据存储在数组中,当你导航到下一个屏幕时,通过导航数组