a页面跳转到b页面, 通过state传参
a页面
this.props.history.push({
pathname: `/chunan-my-declare-detail`,
state: {
record,
takenCount: record.takenCount,
takenTicketTime: record.takenTicketTime,
policyCode: this.state.policyCode,
legalPersonName: this.state.farenData.legalPersonName,
legalPersonPhone: this.state.farenData.legalPersonPhone,
}
});
b页面接收
this.props.location.state
当我刷新当前页面时 this.props,location.state为undefined
???
查了一下发现,是使用 HashRouter的原因, 如果是BrowserRouter就不会出现这个问题,这两个各有各的优势和劣势具体没去了解
另一种解决方式 使用 sessionStorage
const { location } = this.props
let takenTicketTime = '';
let takenCount = '';
let policyCode = '';
let legalPersonName = '';
let legalPersonPhone = '';
// let farenData = {};
if (location.state) {
takenTicketTime = location.state.takenTicketTime;
sessionStorage.setItem('takenTicketTime', takenTicketTime);
takenCount = location.state.takenCount;
sessionStorage.setItem('takenCount', takenCount);
policyCode = location.state.policyCode;
sessionStorage.setItem('policyCode', policyCode);
legalPersonName = location.state.legalPersonName;
sessionStorage.setItem('legalPersonName', legalPersonName);
legalPersonPhone = location.state.legalPersonPhone;
sessionStorage.setItem('legalPersonPhone', legalPersonPhone);
} else {
takenTicketTime = sessionStorage.getItem('takenTicketTime');
takenCount = sessionStorage.getItem('takenCount');
policyCode = sessionStorage.getItem('policyCode');
legalPersonName = sessionStorage.getItem('legalPersonName');
legalPersonPhone = sessionStorage.getItem('legalPersonPhone');
}
this.setState({
policyCode,
takenCount,
takenTicketTime,
legalPersonName,
legalPersonPhone,
})
传递和接收的值是对象{}的话使用
sessionStorage.setItem('params', JSON.stringify({a:1, b: 2}));
值转换为 JSON 字符串
JSON.parse(sessionStorage.getItem('params'))
JSON 字符串转换为对象