狀態保存,是指再次加載頁面時還原表格狀態。在Vue中,我們可以非常便捷地通過標籤實現狀態的保存,該標籤會緩存不活動的組件實例,而不是銷毀它們。但是在React中並沒有這個功能,前端人員又該如何實現狀態保存呢?接下來千鋒廣州HTML5大前端培訓小編就給大家分享常用的幾個方法。
1、手動保存狀態
手動保存狀態,是比較常見的解決方式,可以配合React組件的componentWillUnmount生命周期,通過redux之類的狀態管理層對數據進行保存,通過componentDidMount周期進行數據恢復。
在需要保存的狀態較少時,這種方式可以比較快地實現我們所需功能,但在數據量大或者情況多變時,手動保存狀態就會變成一件麻煩事。為了不需要每次都關心如何對數據進行保存恢復,我們需要研究如何自動保存狀態。
2、通過路由實現自動狀態保存(通常使用react-router)
1)重寫組件,可參考react-live-route。重寫可以實現我們想要的功能,但成本也比較高,需要注意對原始功能的保存,以及多個react-router版本的兼容。
2)替換路由庫為react-keeper。完全替換掉路由方案是一個風險較大的事情,需要較為慎重地考慮。
3)基於組件現有行為做拓展,可參考react-router-cache-route。如果使用component或者render屬性,都無法避免路由在不匹配時被卸載掉的命運。但將children屬性當作方法來使用,我們就有手動控制渲染的行為的可能。
目前的狀態保存實現方式都有各自的問題,但這是十分常見的需求,因此我們一定要認真對待。