我正在使用Ionic 7和React 18。如果URL的哈希部分发生变化,我想在容器中激活不同的组件。我已经尝试过这样做:
const MyContainer: React.FC<ContainerProps> = () => {
...
useEffect(() => {
// Set step based on the hash in the URL
const hash = window.location.hash.substring(1); // Remove the '#' from the hash
switch (hash) {
...
case 'message':
dispatch(setStep(StepsEnum.Message));
break;
}
}, []);
...
{step === StepsEnum.Name && <MyFirstComponent />}
{step === StepsEnum.Address && <MySecondComponent />}
{step === StepsEnum.Message && <MyThirdComponent />}
</IonContent>
</IonPage>
)
}
export default MyContainer
字符串
不幸的是,当我在浏览器中输入不同的哈希值时,什么都没有发生(至少,我没有看到useEffect被调用)。是否可以根据URL的哈希值激活不同的组件?
1条答案
按热度按时间pkln4tw61#
除非你使用路由器,比如React Router,它提供了跟踪URL变化的钩子,否则你需要显式地监听
hashchange
事件。示例(点击链接):
您可以将散列跟踪代码提取到
useHash
钩子(预期):现在,您可以使用
useHash
生成的hash
触发useEffect
:型