我查看了许多JavaScript路由器,但似乎没有一个能正确解决这个问题...(甚至根本不考虑)。
目前,我正在使用React Router 4,并采用以下模式:
1. 当以编程方式离开页面时,我首先使用history.replace(this.state)保存当前页面的状态;然后我使用history.push(newLocation)移出页面。 2. 当一个页面组件被创建(componentWillMount)时,我检查this.props.location.state !== undefined,如果是,则使用this.setState(this.props.location.state)恢复它。
我的问题是:上述模式是否正确?是否建议这样做?有没有更好且广泛采用的方法?
history.push
和history.replace
都具有相同的函数签名(path,[state])
。那么为什么您要使用带有状态作为第二个参数的history.replace
呢?我认为您应该使用简单的history.push(newLocation, this.state)
而不是这两个调用。 - Danehistory.push
中的状态参数是指“在按下后退按钮时将恢复的当前页面状态”还是“新页面将采取的状态”?这非常令人困惑。 - nino.porcinothis.setState()
之后使用history.replaceState()
来保持当前状态更新(同步)吗? - nino.porcino