当前位置: 首页 > 知识库问答 >
问题:

如何使用浏览器后退按钮跳转到Redux状态

孙阳舒
2023-03-14

我是一个react初学者,我有一个使用react路由器(4.2.2)、Redux的项目,我最近添加了react路由器Redux,希望它能解决我的问题。我有一些组件,它们的redux存储状态需要根据与浏览器后退和前进按钮的交互进行更改。

例如,我有一个屏幕,其中包含用户单击的元素的详细信息。如果我使用browser back(浏览器返回)按钮并导航到历史上打开该详细信息视图的另一个点,它将只显示最新的元素信息(因为它是存储中唯一的信息),或者有时根本不会传递任何信息。

我原以为react router redux可以帮助我保持这两个同步,但也许我错过了实现这一点的一个步骤。我已经安装了Redux调试工具,我可以在那里看到我想要跳转到的状态,但是当用户使用“后退”按钮时,如何启用它?详细信息页面的url在每次查看时都是相同的,也许我需要添加一个包含特定信息的哈希标记,但即使如此,我如何在商店中查找正确的信息?

我这样打开细节视图:

<Link to='/activityDetails'>
       <ActivityButton 
           id={this.props.someData.someId}
       />
</Link>

和内部活动按钮:

openActivityDetails = () => {
    this.props.showActivityDetailsScreen(this.props.id);
};

function matchDispatchToProps(dispatch) {
    return bindActionCreators({
        showActivityDetailsScreen: activityDetailsActions.showActivityDetails
    }, dispatch)
}

render(){
    return (
        <div className={'activity-button'} onClick={this.openActivityDetails}>
            <img
                onClick={this.handleClick}
                src={imgPath}
            />
        </div>
    );
}

共有1个答案

公羊玉泽
2023-03-14

所以我自己想通了。本质上,您需要做的是在创建时在其中设置状态信息,如:

<Link to={{
    pathname: '/activityDetails',
    state: { "activityData": activityData }
}}>
    <ActivityButton 
        id={this.props.someData.someId}
    />
</Link>

然后在类中,你需要的信息Activity细节在我的情况下,你可以这样查询:

 var actData = this.props.location.state.activityData;

或者,如果您正在使用withRouter and history,它也位于以下位置:

const { history: { push } } = this.props;
history.state.state.activityData

我最终删除了react router redux,因为它不是必需的。它以当前路线进入该州,但在我的情况下,这没有用。希望这对将来的人有所帮助。

 类似资料:
  • 问题内容: 我正在用php做在线测验应用程序。我想限制用户再次参加考试。我尝试了以下脚本,但是它停止了我的计时器。我该怎么办? 我已经包含了源代码。计时器存储在cdtimer.js中 我有一个考试计时器,该计时器从 mysql 值中获取考试时间。计时器相应地启动,但是当我放入用于禁用后退按钮的代码时,计时器停止。我怎么了 问题答案: 有许多原因导致禁用后退按钮无法真正起作用。最好的选择是警告用户:

  • 问题内容: 我在www.darknovagames.com上运行了基于浏览器的游戏。最近,我一直在努力使用CSS重新格式化该网站,试图让其所有页面都根据HTML标准进行验证。 我一直在想着要在页面左侧放置AJAX导航菜单的想法(而不是每次都将用户带到一个单独的页面,而是需要重新加载标题和导航栏,而这几乎是不会改变的),我知道如果这样做,我可能会破坏浏览器中的“前进/后退”按钮。我的问题是,我应该继

  • 本文向大家介绍如何禁止浏览器使用后退按钮功能,包括了如何禁止浏览器使用后退按钮功能的使用技巧和注意事项,需要的朋友参考一下 本文介绍可找到的各种禁用浏览器后退按钮方案,分析它们各自的优缺点和适用场合。 一、概述    曾经有许多人问起,“怎样才能‘禁用'浏览器的后退按钮?”,或者“怎样才能防止用户点击后退按钮返回以前浏览过的页面?”在ASP论坛上,这个问题也是问得最多的问题之一。遗憾的是,答案非常

  • 问题内容: 如何禁用浏览器的“后退”按钮(跨浏览器)? 问题答案: 这个问题是非常相似,这一个 … 您需要强制缓存过期才能正常工作。将以下代码放在页面代码后面。

  • 问题内容: 当用户登录时,将存储会话信息。当用户注销时,会话信息将被删除。但是当我点击浏览器的后退按钮时,会显示用户信息。由于会话已消失,但我们无法确定是否执行了用户登录操作。我该如何解决这个问题? 问题答案: 我用这种方法。首先创建一个实现Filter的类并重写doFilter()方法。doFilter()的代码是: 之后在web.xml中使用过滤器。这个过滤器就是这个。

  • 问题内容: 您如何确定用户是否按下浏览器中的“后退”按钮? 您如何使用系统在单页Web应用程序内强制使用页内后退按钮? 到底为什么浏览器后退按钮不触发自己的事件!? 问题答案: (注意:根据Sharky的反馈,我提供了用于检测退格的代码) 因此,我经常在SO上看到这些问题,并且最近遇到了我自己控制后退按钮功能的问题。在为我的应用程序寻找最佳解决方案(带哈希导航的单页)几天后,我提出了一个简单的,跨