POP历史记录将清除location.state中的功能?

时间:2016-03-24 04:28:47

标签: reactjs react-router

我只是不确定发生了什么,这是否是预期的行为。

首先,我在位置状态下发送什么功能

/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' }

提前谢谢

1 个答案:

答案 0 :(得分:0)

位置状态的内容必须是JSON可序列化的 - 你不能把函数放在那里。