【发布时间】:2020-03-05 16:28:19
【问题描述】:
在屏幕 A 上,有一个值用于跟踪 GraphQL 突变的加载。我想将该加载值传递给屏幕 B。我的问题是,当我尝试使用 navigation.navigate(ScreenB, { loading }) 将该值作为参数传递给屏幕 B 时,加载的值不会更新 - 它始终保持不变调用 navigation.navigate 的那一刻。
我知道setParams 会更新给定路由的参数,但它似乎不适用于我的用例,因为它不会更改路由之间的参数。有什么方法可以让前一个屏幕动态设置参数,以便我可以在当前屏幕上恢复更改的值?
const ScreenA = (props) => {
const { data, loading } = useQuery(QUERY);
(
<View>
<Button onPress={() => navigation.navigate(ScreenB, { loading } }/>
</View>
)
}
const ScreenB = (props) => {
const screenALoading = navigation.getParam('loading');
return (
<Text>{loading}</Text>
)
}
【问题讨论】:
-
那么,您的用例是什么?请显示代码。
-
在 ScreenB 中试试这个。
const screenALoading = props.navigation.state.params.loading;
标签: reactjs react-native react-navigation react-navigation-stack