Javascript 如何在不重新呈现页面的情况下更新路由(打开/关闭具有自己路由的模式)?

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

在我的路线中,我为特定路线设置了一个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参数相关的详细信息(例如,slug
sarah 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");
    }