在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ reducer返回的對象為空時,組件中監(jiān)聽不到state的變化

reducer返回的對象為空時,組件中監(jiān)聽不到state的變化

最近學習用react開發(fā)一個后臺系統(tǒng),要求有多窗口功能,我是打算用antd的tabs來模擬。現(xiàn)在遇到一個問題,就是在我刪除最后一個tab時無法觸發(fā)redux。

tabList.js

clipboard.png

點擊左邊的菜單會生成對應的tab標簽,這個過程分別會發(fā)一個action給redux生成新的state返回給組件,同時也會把相關數(shù)據(jù)保留到localstorage中,處理刷新頁面當前tab還在。當標簽頁有多個時,點擊刪除正常刪除。但當只剩最后一個標簽,點擊刪除,頁面上的標簽頁被刪除了,但沒觸發(fā)componentDidUpdate。導致我拿不到最新的state,也就無法存入localstorage中。刷新頁面后始終有一個tab標簽。

clipboard.png

點擊刪除按鈕觸發(fā)remove方法。該方法會把一個關鍵key傳入reducer中

clipboard.png

上圖的console.log在刪除最后一個tab時不觸發(fā)。

reducers.js

clipboard.png

點擊刪除action.type為REM_tabList,接收到一個key同state中的數(shù)據(jù)對比,key相同則刪除對應數(shù)據(jù)。此時當state為[]時,在reducers.js中答應state能正常打印出[],而tabList.js中的mapStateToProps中的console.log(state)卻未執(zhí)行。

ps:嘗試了使用在connect()()中使用深對比也沒用。

回答
編輯回答
汐顏

你直接改變了原來的reducers里的state的引用,redux檢測不到變化了吧
直接

return state.filter(xxxxxx)

試試

2018年5月20日 09:29