我只是不确定发生了什么,这是否是预期的行为。
首先,我在位置状态下发送什么功能
/path1
const state = {
action: () => {},
other: 'other'
}
this.props.history.replaceState(state, '/path2')
然后我将把状态发送到某条路线
/path2
this.props.history.replaceState(this.props.location.state, '/path3')
此时如果我记录位置状态,action
仍然存在
console.log(this.props.location.state) // print { action: fn(), other: 'other' }
但是当我在浏览器上执行go back
时,我现在正在路线/path1
console.log(this.props.location.state) // print { other: 'other' }
你们可以看到function
已从位置状态中删除。
我的问题是为什么会发生这种情况?这背后有什么理由吗?
即使我将function
放入对象中
例如
const state = {
action: { moreAction: () => {} },
other: 'other'
}
this.props.history.replaceState(state, '/path2')
当执行返回浏览器时,位置的状态仍然是
console.log(this.props.location.state) // print { action: {}, other: 'other' }
提前谢谢
答案 0 :(得分:0)
位置状态的内容必须是JSON可序列化的 - 你不能把函数放在那里。