我的应用程序中有一条可以从两个不同位置导航到的路线。
具体说来:
主屏幕(堆栈导航(->目标路由
选项卡导航 ->目标路线
我注意到,无论目标路由的导航方式如何,反应导航都会重复使用相同的目标路由组件(不会重新挂载(。
遗憾的是,这意味着路由参数始终与用于导航到目标路由的第一种方法相同。
当从主屏幕导航到目标路线时,我想聚焦一个输入搜索框,但在通过选项卡导航导航时则不然。
最初我使用以下代码:
useEffect(() => {
const _focusSearchBar = (payload) => {
if (props.navigation.getParam('shouldFocus') && searchBar && searchBar.current) {
searchBar.current.focus();
}
}
let focusSub = props.navigation.addListener('didFocus', _focusSearchBar);
_focusSearchBar();
return () => focusSub.remove();
}, []);
我怎样才能做到这一点?此外,目标路由会加载数据,因此它不会重新挂载可能是一件好事......
从本质上讲,我还需要一种方法来确定路线是如何导航的,通过主屏幕或通过选项卡导航。
谢谢!
读取 https://reactnavigation.org/docs/en/navigating.html#navigate-to-a-route-multiple-times
您需要使用 navigation.push()
来运行具有不同参数的组件副本。