使用react路由传递过来的state如何清除

当我们使用react需要从一个组件传参到另一个组件的时候,会有params,search,state三种实现方式;

实际需求:    从一个组件传递到另一个组件,并且不在url中显示传递的数据

依据项目中实际需求,选择state方式进行参数传递:

<Link to={{ pathname: "/path", state: {paramName: paramValue}}}>

在另一个组件中接收到参数

let {paramName} = this.props.location.state

在每次接受到参数之后,我们需要将这个数据清除,在stackoverflow有以下方法:

1. 在componentDidMount中添加以下代码:

import createHistory from 'history/createBrowserHistory'

componentDidMount(){
    const history = createHistory();
    if (history.location.state && history.location.state.paramName) {
        let state = { ...history.location.state };
        delete state.paramName;
        history.replace({ ...history.location, state });
    }
}

2.直接在接受组件并执行相应操作后,对paramName重新赋值:

this.props.history.replace("/pathName",{paramName:newParamValue});

或者是:

this.props.history.replaceState({paramName: newParamValue}, "/pathName")

如果是需要清除该数据的话,将newParamName替换为undefined/null(根据实际需求替换即可)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值