【发布时间】:2016-02-12 16:45:42
【问题描述】:
如果我有一个简单的反应组件,它记录一个按钮的点击次数,并且每次点击都会记录一个新的历史状态而不更改 URL。当用户点击返回时,我如何将状态恢复到原来的状态?
我可以使用本机 JavaScript 历史记录对象,但当用户转换回第一个状态并从不同组件返回到此组件的最后一个状态时,它会失败。
我怀疑使用 react-router (1.0) 可以更好地做到这一点?
import React, { Component } from 'react';
export default class Foo extends Component {
state = {
clickCount: 0,
};
componentWillMount() {
window.onpopstate = (event) => {
if (event.state.clickCount) {
this.setState({ clickCount: event.state.clickCount });
}
};
}
onClick() {
const newClickCount = this.state.clickCount + 1;
const newState = { clickCount: newClickCount };
this.setState(newState);
history.pushState(newState, '');
}
render() {
return (
<div>
<button onClick={this.onClick.bind(this)}>Click me</button>
<div>Clicked {this.state.clickCount} times</div>
</div>
);
}
}
【问题讨论】:
-
在 react-router 中检查浏览器历史记录。
-
也许this answer 帮助。
-
您可以将 localStorage 用于您的状态。为什么不呢?
标签: reactjs react-router