我正在通过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变量获取数据? 谢谢