我正在学习如何正确使用ReactHooks。我遇到了如下所述的问题:
我正在使用Nav component作为第三方库。我使用钩子的组件如下所示:
//using redux selector to get value from state
const { screenType } = useSelector((state: IStateStore) => ({
screenType: state.screenType
}));
// dummy use effect to see when store's screentype is being updated
React.useEffect(() => {
console.log("screentype in effect", screenType); //prints updated when store changes
}, [screenType]);
//onRender callback I pass to my third party component
const onRenderLink = (link: INavLink) => {
console.log("Screen Type inside :", screenType);//never gets executed after screentype updates
return (<>Hello</>);
};
return (
<Navigation
groups={[]}
onRenderLink={onRenderLink}
/>
</div>
);
};
我的问题是:
如何使screenType值更改再次调用onRenderLink?我试过了
<Navigation
className="sectionTabs"
groups={[]}
onRenderLink={React.useCallback(onRenderLink, [screenType])}
/>
我认为,当screenType更改时,这将重新触发我的回调方法,但事实并非如此。 谢谢您的帮助
答案 0 :(得分:0)
尝试将screenType
作为导航的key
<Navigation
key={screenType}
groups={[]}
onRenderLink={onRenderLink}
/>