我正在實作“添加收藏夾”并將這些專案存盤在 async-storage Vs react-redux 中。添加并從主頁選項卡切換到收藏選項卡后,它作業正常。但我在殺死應用程式并轉到收藏選項卡后收到錯誤“date.toDate 不是函式”。
有什么建議和解決方案嗎?太感謝了!
零件
<CardInfo
key={data.id.toString()}
promotionToDate={moment(data.expireDate.toDate()).format('lll')}
/>
行動
export const getPromotionsAction = () => async dispatch => {
dispatch({type: GET_PROMOTION});
const response = await firebase.firestore().collection('xxxx').get();
const values = [];
response.docs.forEach(res => {
values.push(res.data());
});
dispatch({type: GET_PROMOTION, payload: values});
return values;
};
export const addFavoriteAction = fav => dispatch => {
dispatch({
type: ADD_PROMOTION_TO_FAVORITE_LIST,
payload: fav,
});
};
店鋪
// import rootReducer from '../redux';
import thunk from 'redux-thunk';
import PromotionReducer from './reducers';
import {persistStore, persistReducer} from 'redux-persist';
import AsyncStorage from '@react-native-async-storage/async-storage';
import {createStore, combineReducers, applyMiddleware} from 'redux';
import {logger} from 'redux-logger';
const persistConfig = {
key: 'root',
storage: AsyncStorage,
whitelist: ['setPromotionToFavorites'],
};
const rootReducer = combineReducers({
PromotionReducers: persistReducer(persistConfig, PromotionReducer),
});
export const store = createStore(rootReducer, applyMiddleware(thunk, logger));
export const persistor = persistStore(store);
export type RootStateType = ReturnType<typeof store.getState>;
注意我正在使用 Firestore,Momentjs 在此處輸入影像描述
uj5u.com熱心網友回復:
函式和物件是 JavaScript 中的參考型別,幾乎 JavaScript 中的所有東西都是物件,除了六種不是物件的東西:null、未定義、字串、數字、布林值和符號。
當我們查看AsyncStorage時,如果我們必須將值存盤在 AsyncStorage 中,那么我們必須決議字串資料型別中的資料。
當時使用 JSON.stringify 將物件轉換為字串,而函式無法轉換為字串。
我們使用 redux-persist 和 AsyncStorage,它通過 JSON.stringify 將物件存盤到其中。
在結論中,我們必須確保通過從函式回傳值將函式轉換為 JSON 物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/433664.html
上一篇:如何等待淡出功能結束?
