当Params改变时,React Router Dom防止提示

时间:2017-12-06 14:52:13

标签: reactjs redux prompt react-router-v4 react-router-dom

我正在构建一个React Redux应用程序,我使用<Prompt/>中的react-router-dom来防止用户在页面上呈现特定图标时导航离开页面。

除了当url中的参数发生变化然后当我不希望它发射时它触发<Prompt/>时它工作正常,因为我还没有真正尝试过随处导航。我的网址看起来像:

http://localhost:8080/#/path/im/on?ids=1%2C24&from=1512518400000&searchRequest=e0007&to=1512604799000

ids中的url成功后,它们会从url移除,但<Prompt/>仍会被解雇。

<Prompt/> url更改且params的第一部分保持不变时,我是否可以阻止url触发?即http://localhost:8080/#/path/im/on

1 个答案:

答案 0 :(得分:0)

不确定这是否仍然与您相关,但是您可以执行以下操作:

Prompt组件中的

'message'属性可以是字符串,也可以是返回字符串或布尔值的函数。

<Prompt
     message={(location) => {
       return location.pathname.startsWith("your url")
         ? true
         : `Are you sure you want to go to ${location.pathname}?`
     }}
/> 

如果将函数传递给消息prop,则将使用用户尝试导航到的下一个位置和操作来调用该函数。返回一个字符串以向用户显示提示,或者返回true以允许过渡。

这是文档链接:https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/Prompt.md