我正在构建一个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
答案 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