在我使用 Android Studio 設置的 React Native 應用程序中,我使用 redux-persist 來持久化狀態,存儲引擎是 AsyncStorage。在應用程序中,我有一個“添加”按鈕和一個“刪除”按鈕,用于添加和刪除狀態中的項目。“添加”按鈕工作正常,它將一個項目添加到狀態并重新呈現屏幕。但是“刪除”按鈕雖然從狀態中刪除了一個項目(我在 React Native Debugger 上看到過),但它不會重新渲染屏幕并保持狀態。但是不同版本的代碼有效。我想知道為什么以前的版本不起作用。這是我的減速器功能://reducer.jsimport React from 'react';const initialState = { key: [ { id: 0 }, { id: 1 } ]};const reducer = (state = initialState, action) => { switch (action.type) { case 'SAVE': return { key: [...state.key, action.payload] }; // this version doesn't re-render the screen and doesn't persist case 'REMOVE': let { key } = state; key.pop(); return { key }; // this version re-renders the screen and persists case 'REMOVE': let { key } = state; return { key : key.slice(0, key.length - 1)}; default: return state; }};export { reducer };
Reducer 函數改變狀態,但屏幕不重新渲染
繁花如伊
2023-03-18 16:20:31