2017-04-04 77 views
1

我正在構建一個應用程序與reactjs和在某些時候我有一個SearchForm,然後我點擊其中一個項目,並在該視圖中我有一個後退按鈕。發送信息在browserHistory.goBack

我想要的是用先前的數據填充搜索表單。我已經用javascript的localStorage實現了它。並且在componentWillUnmount上保存狀態,問題是這個數據總是被加載,即使我沒有從返回到達。

有沒有辦法給goBack添加一種狀態來告訴它?

回答

0

所以,最好的方法是不使用localStorage,而是使用歷史狀態。

當用戶更新表單,你可以這樣做(可選抖它更好的性能):

history.replaceState(this.props.location.pathname, { 
    formData: JSON.stringify(formData), 
}); 

然後,當組件加載後,你可以訪問像這樣的狀態:

const {location} = this.props; 
const routeState = location.state && location.state.formData; 
if (routeState) { 
    this.setState({ 
    data: JSON.parse(routeState), 
    }); 
} 

如果他們刷新頁面,或轉到其他頁面並返回,或返回然後繼續前進,他們將擁有該狀態。如果他們在新標籤中打開它們,他們將沒有該狀態。這通常是你想要的流程。

+0

那個歷史是來自ReactJS? –

+0

我試過這種方式(添加將該位置更改爲歷史記錄),但行爲相同。如果點擊後退按鈕是可以的,但是如果我進入主頁,比回去搜索仍然有我保存的相同的表格數據以前 –