Я недавно начал реагировать / реагировать-native и пробовал реагировать-собственное приложение. Моя идея состоит в том, чтобы установить client_id, который сохраняется при запуске, перезапуске, удалении и установке приложения.
Поэтому, когда я пытаюсь сохранить из редактора (ctrl + s), я вижу, что клиент сохраняется и остается таким же. Когда я закрываю приложение и перезапускаю его, идентификатор клиента меняется (выполняется с мобильного устройства или refre sh r с сервера node/js). но когда я сохраняю (ctrl + s) без каких-либо изменений кода, идентификатор клиента возвращается к исходному идентификатору, который был сгенерирован первым (первое действие отправки). Итак, я понимаю, что значение сохраняется, но приложение не читает из постоянного хранилища, и именно поэтому оно показывает разные числа при каждом запуске (или refre sh из node/js окна сервера). Но как обеспечить чтение значения из хранилища при запуске / повторном запуске.
Может ли кто-нибудь помочь мне решить эту проблему? Я пытаюсь за последние несколько дней. Заранее спасибо. Вот мой код.
// clientstore.js
const persistConfig = {
key: 'root',
storage: AsyncStorage,
stateReconciler: hardSet,
};
export default function getStore() {
const persistedReducer = persistReducer(persistConfig, storeReducer);
let store = createStore(persistedReducer);
let persistor = persistStore(store);
return { store, persistor };
}
// storereducer.js
const defaultState = {
client_id: ''
}
const storeReducer = (state = defaultState, action = {}) => {
const { type, payload } = action;
var tmp_object = Object.assign({}, state);
switch (type) {
case 'SET_CLIENTID':
tmp_object.client_id = state.client_id.toString()=='' ? payload : state.client_id;
return tmp_object;
default:
return state;
}
}
//App.js
const { store, persistor } = getStore();
persistor.persist(); // adding or removing makes no difference
const App = () => {
if (store.getState().client_id.toString()=='') {
store.dispatch({type: 'SET_CLIENTID', payload: genTerrierToken()});
persistor.flush(); //adding or removing makes no difference
}
return (
<View><Text>
Client ID: {store.getState().client_id}
</Text></View>
);
}