@aleshaykovlev
html, css, js, node, webpack, sass, react

При вызове двух функций по обновлению стора один обнуляется?

Есть два редюсера:
user
function userReducer(state = initialState, action: IPersonAction) {
	switch (action.type) {
		case SET_USER:
			if (action.logout) {
				Cookies.remove("token");

				return {
					isAuth: false,
					info: initialState.info
				};
			}

			return {
				info: action.payload,
				isAuth: true
			};
		default:
			return initialState;
	}
}


posts
function postsReducer(state = initialState, action: IPostAction) {
	switch (action.type) {
		case SET_POSTS:
			if (!Array.isArray(action.payload)) return;
			return [...action.payload];
		case ADD_POST:
			if (Array.isArray(action.payload)) return;
			return [action.payload, ...state];
		case REMOVE_POST:
			return state.filter((post: IPost) => +post.id !== +action.payload);
		default:
			return initialState;
	}
}


В App файле обновляю их значения:
React.useEffect(() => {
		dispatch(checkAuthAsyncAction());
		dispatch(getPostsAsyncAction(setText));
	}, []);


checkAuthAsyncAction:
function checkAuthAsyncAction() {
	return (dispatch: React.Dispatch<any>) => {
		checkAuth()
			.then((data) => {
				const { person } = data;
				dispatch(setUser(person));
			});
	};
}


getPostsAsyncAction:
function getPostsAsyncAction(
	setText: React.Dispatch<React.SetStateAction<string>>
) {
	return (dispatch: React.Dispatch<any>) => {
		getAllPosts()
			.then((data) => {
				const { posts } = data;
				dispatch(setPosts(posts));
			});
	};
}


Все данные приходят правильно.

При обновлении страницы срабатывает SET_POSTS => posts = [{...},{...}], user = {},
потом срабатывает SET_USER => user = [{...}], posts = [], то есть posts обнуляется
  • Вопрос задан
  • 31 просмотр
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
default:
return initialState;

default:
      return state;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы