Привет всем, я новичок, использующий избыточность в моем приложении «Русский».ну, я сохранил неверную информацию в своем InitialState навигатора, поэтому при попытке перезагрузить приложение в эмуляторе Android я получаю эту ошибку
Invariant Vilation: для ключевого пользователя не определен маршрут.Должно быть одним из: 'Main', 'Welcome'
Ошибка произошла, потому что в этом методе
действия/user.js
export function loginWithFacebook(facebookAccessToken) {
return (dispatch) => {
return fetch(`${HOST}/api/v1/facebook`, {
method: 'POST',
body: JSON.stringify({
facebook_access_token: facebookAccessToken,
}),
headers: { "content-type": "application/json" },
})
.then(response => response.json())
.then(json => {
console.log(json);
if (json.access_token) {
dispatch(setAccessToken(json.access_token));
dispatch(setProfile(normalizeProfile(json.email, json.fullname, json.image)));
dispatch(resetRoute({ routeName: 'Welcome' }));
} else {
alert(json.error);
}
})
.catch(e => alert(e)); }; }
В этой строке произошла ошибка
dispatch (resetRoute ({routeName: 'Welcome'}));
Я написал "Home" вместо "Welcome"
, и вместо этого в моем initialState nav было добавлено значение Home вместо значения Welcome
actions / nav.js
export function resetRoute(route) {
return (dispatch, getState) => {
const nav = getState().nav;
dispatch(NavigationActions.reset({
index: 0,
key: null,
actions: [
NavigationActions.navigate(route)
]
})); }; }
Редукторы
index.js
export default combineReducers({
nav,
user });
nav.js
const initialState = AppNavigator.router.getStateForAction(NavigationActions.reset({
index: 0,
actions: [
NavigationActions.navigate({
routeName: 'Main',
}),
], }));
export default function(state = initialState, action) {
//state = undefined;
const nextState = AppNavigator.router.getStateForAction(action, state);
return nextState || state;
};
Метод выше вызывает исключения, потому что, когда он вызывает AppNavigator.router.getStateForAction (action, state);он получает «Home» вместо «Welcome», поэтому в основном мне нужно перезапустить initialState к началу
Как можно вручную установить все мои редукторы initialState ВРУЧНУЮ?Помните, я не вижу экран в моем эмуляторе Android, поэтому я не могу запускать действия с помощью кнопок или чего-то подобного.
Я нашел эту статью: Как сбросить состояние магазина Redux? но в моем случае я не вижу экрана для запуска действия Logout.
Решение, которое я считаю, состоит в том, чтобы установить нулевое или пустое значение initialState моих редукторов, чтобы оно могло начинаться с самого начала.но как я могу это сделать?