当我们使用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(根据实际需求替换即可)