不建议通过
route params
。从你的代码和解释来看,你实际上想
pass data back to the screen on goBack
。
而不是做
route.params.onGoBack(item);
return navigation.goBack();
我们可以通过
item
返回到
MainFormScreen
在其路线参数上
navigation.goBack()
并直接在中设置状态
主窗体屏幕
在
useEffect
。这使我们不必在路由参数中传递函数。相反,我们直接在表单中设置状态。
选项屏幕
而不是打电话
goBack
,我们可以使用
navigate
照常通过
项目
回到
主窗体屏幕
return navigation.navigate('MainFormScreen', { item: item })
主窗体屏幕
在这里,我们不再传递函数,而是对路由参数的更改做出反应。
const openSelectFish = () => {
return navigation.navigate("ItemList", { sendItemBack: true });
};
const params = useMemo(() => route.params || {}, [route.params])
const [item, setItem] = useState()
const onSelectItem = useCallback((item: ItemDTO) => {
setItem(item.name); // basic useState
}, [setItem]);
useEffect(() => {
onSelectItem(params.item)
}, [params, onSelectItem])