Javascript 如何在不重新呈现页面的情况下更新路由(打开/关闭具有自己路由的模式)?
在我的路线中,我为特定路线设置了一个slug,如下所示:Javascript 如何在不重新呈现页面的情况下更新路由(打开/关闭具有自己路由的模式)?,javascript,reactjs,react-router,react-router-v4,Javascript,Reactjs,React Router,React Router V4,在我的路线中,我为特定路线设置了一个slug,如下所示: Main route: /members Sub route: /members/:slug 现在当我进入www.website.com/members/some slug 我将尝试检测是否有鼻涕虫: if (this.props.match.params.slug) { // If have slug, open a modal window with data that corresponds to that slug
Main route: /members
Sub route: /members/:slug
现在当我进入www.website.com/members/some slug
我将尝试检测是否有鼻涕虫:
if (this.props.match.params.slug) {
// If have slug, open a modal window with data that corresponds to that slug
this.showModal(this.props.match.params.slug);
}
所发生的情况是,showModal将模态组件的状态更改为true(从而显示它),并触发API调用以获取与所传递的slug参数相关的详细信息(例如,slugsarah smith
用于get请求,作为获取sarah smith详细信息的参数)
到目前为止,所有这些都很好。但是,当我执行以下任一操作时,问题在于重新呈现页面:
member.name
作为slug):
这将重新呈现整个页面/member
页面,而不仅仅是关闭模式。我不能只使用this.setState({showmodel:false})代码>因为这不会将路由更改回/member
有办法解决这个问题吗?或者另一种方法,这样在更改URL时页面不会重新呈现?您可以像这样在路由中包装您的模式
情态动词
然后这个.props.history.push(“/path”) 我想现在已经有这样的例子了。您可以查看以下内容
还有可用的npm
模块您能在sanbox.io或codepen.io中复制这个吗?
<Link
to={`/member/${member.name}`}
</Link>
closeModal() {
this.props.history.push("/member");
}