更改React Router中的路径而不引起重新渲染?

时间:2018-11-01 09:24:09

标签: reactjs react-router

我有以下路线:

<Route path="/cases" component={Cases} />

此路由处理以下示例路径

/cases
/cases/1

我在这条路线上有一个iframe,负责处理所有用户互动。在iframe中更改位置后,iframe会在父窗口中发布一条消息,通知其网址已更改。

我希望能够在父窗口中更改路线而无需重新呈现iframe。

这是我目前的解决方案

this.props.history.replace(pathnameFromIframe);

shouldComponentUpdate = () => {
    return false;
}

此解决方案有效,但与React文档相反:

  

shouldComponentUpdate ...方法仅作为性能存在   优化。不要依靠它来“阻止”渲染,因为这样可以   导致错误。

     

https://reactjs.org/docs/react-component.html#shouldcomponentupdate

我可以通过其他方式解决吗?

是否可以在不将路线作为道具添加到组件的情况下更改路线?这将解决我认为的问题。

1 个答案:

答案 0 :(得分:0)

我认为hashHistory您需要什么?如果我没记错的话

import { hashHistory } from 'react-router';


hashHistory.push({
    pathname:"/url-url",

  });