我是一个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>
);
}
所以我自己想通了。本质上,您需要做的是在创建时在其中设置状态信息,如:
<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上看到这些问题,并且最近遇到了我自己控制后退按钮功能的问题。在为我的应用程序寻找最佳解决方案(带哈希导航的单页)几天后,我提出了一个简单的,跨