应用场景:离开当前页面时,提示“是否离开”,“内容是否保存”,等
<Prompt>
<Prompt
when={formIsHalfFilledOut}
message="你确定要离开当前页面吗?"
/>
message
message: string
当用户试图离开某个位置时弹出的提示信息。
message: func
将在用户试图导航到下一个位置时调用。需要返回一个字符串以向用户显示提示,或者返回 true 以允许直接跳转。
<Prompt message={location => {
const isApp = location.pathname.startsWith('/app');
return isApp ? `你确定要跳转到${location.pathname}吗?` : true;
}} />
这里的 location 对象指的是下一个位置(即用户想要跳转到的位置)。可以基于它包含的一些信息,判断是否阻止导航,或者允许直接跳转
when: bool
在应用程序中,可以始终渲染 <Prompt> 组件,并通过设置 when={true} 或 when={false} 以阻止或允许相应的导航,而不是根据某些条件来决定是否渲染 <Prompt> 组件。
项目中的应用
编辑模式下,路由跳转前提示,信息尚未保存,并拒绝跳转
import { Prompt } from 'dva/router';
<Prompt
when={this.state.editReceiver}
message={() => {
if (this.state.editReceiver) {
Modal.warning({
title: '您修改的信息尚未保存!',
});
return false;
} else return true;
}}
/>
网友评论