博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
react--列表携带搜索条件到详情,详情回到列表要回显之前的搜索条件,然后刷新后搜索条件重置初始状态...
阅读量:5313 次
发布时间:2019-06-14

本文共 1746 字,大约阅读时间需要 5 分钟。

操作:

(1):在接诊记录列表页有搜索条件如姓名手机号,接诊时间和接诊类型。

(2):输入搜索查询条件后,点击进去详情页。

(3):在详情页点击返回列表按钮。

要求:

在列表页还回显跳转详情页时的搜索条件,且刷新页面后搜索条件重置为初始状态。

页面展示:

(1)列表页面初始状态。

 

 

 

 

 

 

 (2):增加搜索条件点击查询--点击详情。

 

 (3):在详情页点击返回按钮,回到详情页。

 

(4):返回页面,搜索条件回显。

 

 

 

核心代码:

1:详情页跳转,查询条件放在路由location的state里面。

// 跳转到详情方法  JumpToDetail = (record) => {    const { form } = this.props;    const formValue = form.getFieldsValue(['accept_date', 'input_data', 'accept_type']); // form表单获取搜索字段    hashHistory.push({      pathname: `/reception/detail/${record.trea_id}/${record.visi_id}`,      state: formValue    });  }

2点击详情页返回按钮:

// 返回列表页  handleBackToDetail = (e) => {    const { location: { state } } = this.props;    hashHistory.push({      pathname: 'reception/main', // 列表页地址      state, // 列表页的state再带回去    });  }

 

 

3:列表页设置搜索条件值和刷新页面的处理

componentDidMount() {    const { location: { state = {} }, form } = this.props;    const { accept_date, ...rest } = state;    let accept_start_date = null;    let accept_end_date = null;    if (accept_date) {      accept_start_date = moment(accept_date[0]);      accept_end_date = moment(accept_date[1]);    } else {      accept_start_date = moment();      accept_end_date = moment();    }    rest.accept_date = [accept_start_date, accept_end_date];    // 即将离开当前页面(刷新或关闭)时触发,路由跳转不触发该方法    window.onbeforeunload = () => {      // 清除localtion的state,是会被自动存在sessionStorage里面的,找到相应的props.location.key,移除相应的数据      sessionStorage.removeItem(`@@History/${this.props.location.key}`);    };    // 表单设置用户之前的搜索条件    form.setFieldsValue({ ...rest });    // 请求数据    this.handleSearchList();  }

4:组件卸载移除onbeforeunload方法:

componentWillUnmount() {    window.onbeforeunload = null;  }

然后去测试了下,完全可行。

备注:hash路由跳转页面是不会重载的,但是组件会加载,不要把组件加载和页面重载搞混淆。

 

转载于:https://www.cnblogs.com/yxfboke/p/11492696.html

你可能感兴趣的文章
Fine Uploader文件上传组件
查看>>
javascript中的传递参数
查看>>
objective-c overview(二)
查看>>
python查询mangodb
查看>>
consonant combination
查看>>
驱动的本质
查看>>
Swift的高级分享 - Swift中的逻辑控制器
查看>>
Swagger简单介绍
查看>>
Python数据分析入门案例
查看>>
vue-devtools 获取到 vuex store 和 Vue 实例的?
查看>>
Linux 中【./】和【/】和【.】之间有什么区别?
查看>>
内存地址对齐
查看>>
看门狗 (监控芯片)
查看>>
css背景样式
查看>>
JavaScript介绍
查看>>
开源网络漏洞扫描软件
查看>>
yum 命令跳过特定(指定)软件包升级方法
查看>>
创新课程管理系统数据库设计心得
查看>>
Hallo wolrd!
查看>>
16下学期进度条2
查看>>