Задать вопрос
@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 обнуляется
  • Вопрос задан
  • 35 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Javascript.ru
    Курс по React
    5 недель
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
default:
return initialState;

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

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽