6
如果我有一個簡單的反應組件,它記錄按鈕的點擊次數,並且每次點擊都記錄一個新的歷史記錄狀態而不更改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中籤出瀏覽器歷史記錄。 –
也許[這個答案](http://stackoverflow.com/questions/29442206/how-to-pass-both-this-state-and-this-props-to-routes-using-react-router)幫助。 –
您可以將localStorage用於您的狀態。爲什麼不? –