Мой редуктор:
export const initialUserState = {
username: '',
address: '',
token: '',
address: '',
loggedIn: false,
loaded: false,
};
export const userReducer = async (state, action) => {
try {
switch (action.type) {
case 'LOAD':
try {
const value = JSON.parse(await AsyncStorage.getItem('user_info'));
const newState = { ...state, ...value, loggedIn: true, loaded: true };
console.log('New State:', newState);
if (value !== null) {
return newState;
}
} catch (error) {
return { ...state, loaded: true };
}
break;
default:
return state;
}
} catch (error) {
console.log(error);
return state;
}
};
Мое приложение. js:
import { userReducer, initialUserState } from './reducer';
const App = () => {
const [user, dispatch] = useReducer(userReducer, initialUserState);
useEffect(() => {
dispatch({ type: 'LOAD', ready: setReady });
}, []);
useEffect(() => {
console.log('state user:', user);
}, [user]);
}
export default App;
Что происходит в приложении. js, после вызова второго useEffect, обновляет состояние и пользователь возвращает обещание. Обещание имеет несколько свойств, в одном из которых находится правильное состояние, которое оно должно было вернуть. Разве это не должно вернуть государство? Я что-то не так делаю?
В двух словах:
1) Приложение запускается
2) useEffect вызывает первый раз и имеет правильное начальное состояние
3) Я вызываю действие LOAD, которое обновит состояние
4) useEffect вызывается во второй раз. На этот раз он возвращает обещание и должен возвращать только обновленное состояние магазина, я полагаю?