如何在StackNavigator中使用useState变量

时间:2019-10-02 08:31:47

标签: react-native

我正在通过useEffect挂钩获取类别列表:

useEffect(() => {
fetch(
  `/read.php?catId=${catId}`
)
  .then(res => res.json())
  .then(res => {
    setProducts([...products, ...res.data]);
  });
}, []);

并将数据存储在useState挂钩中

const [products, setProducts] = useState([]);

我在URL中使用的{catId}是通过上一个屏幕上的routeName转发的,我可以通过getParam这样获得它:

const catId = props.navigation.getParam("categoryId");

这对于功能组件内部非常有用。问题是,我还需要在StackNavigator中使用“产品”变量的道具。因此,我尝试使用navigationOptions的navigationData函数,再次使用getParam并在products变量上使用find方法:

CategoryProductsScreen.navigationOptions = navigationData => {
  const catId = navigationData.navigation.getParam("categoryId");

  const selectedCategory = products.find(cat => cat.id === catId);

  return {
    headerTitle: selectedCategory.category_name
  };
};

很遗憾,'products'变量在功能组件之外不可用。显然,我也不能再使用useEffect来再次获取数据。

有没有办法从StackNavigator中的useState变量获取数据? 谢谢

0 个答案:

没有答案