我正在使用 Ionic React 的侧边菜单模板,所以我的大部分逻辑都在 ExploreContainer.tsx 中。
//imports
//some logic
const ExploreContainer: React.FC<ContainerProps> = ({ name }) => {
switch( name ) { //switch to show content on requested item from side menu
case 'Home':
return (
//content for home
);
case 'Info':
return (
//content for info
);
}
};
export default ExploreContainer;
现在,由于我正在为移动设备构建它,因此我正在使用电容器。这使我能够监听硬件后退按钮事件。当用户按下他们的后退按钮时,我希望他们在这个例子中回到“主页”。我发现的所有答案总是指导航按钮,可以在其中声明自定义状态并可能使用<Redirect />
组件。
现在,为了扩展前一个示例,假设我想要这样的东西:
//imports
import { Plugins } from '@capacitor/core';
const ExploreContainer: React.FC<ContainerProps> = ({ name }) => {
Plugins.App.addListener("backButton", () => {
name = "Home";
}
switch( name ) { //switch to show content on requested item from side menu
case 'Home':
return (
//content for home
);
case 'Info':
return (
//content for info
);
}
};
export default ExploreContainer;
可悲的是,这不起作用。以前我尝试过以下方法:
import { useHistory } from 'react-router-dom';
Plugins.App.addListener("backButton", () => {
history.push("/page/Home");
});
然而,这会导致一些非常丑陋的行为。应用程序完全重新加载,所有变量都被重置,等等。
如果我理解正确, 的name
属性ExploreContainer
是当用户从菜单中选择一个项目时改变的状态,所以通常应用程序不需要重新加载。
我该怎么办?