Мои извинения за заголовок.
В любом случае, я вижу странное поведение в моем Redux Dev Tool, когда я создаю определенный тип действия. Единственный способ показать, что я имею в виду, это на примере.
Допустим, у меня есть состояние с такой структурой:
const INITIAL_STATE = {
isFile: false,
isUploaded: false,
isUser: true
};
Поскольку в этом состоянии есть просто ключи без вложенных объектов Я полагаю, я могу просто создать одно действие, чтобы изменить все ключи, а не другое действие для каждого конкретного ключа.
Таким образом, редуктор становится:
const CHANGE_KEY = "CHANGE_KEY";
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case CHANGE_KEY:
return {
...state,
[action.payload.key]: action.payload.value,
};
default:
return state;
}
};
const changeKeyInState = (key, value) => ({ type: CHANGE_KEY, payload: { key, value } });
Теперь все это работает , Поэтому я могу вызвать одно действие, чтобы изменить простые пары ключ-значение в состоянии. Однако, допустим, у меня есть разные редукторы, которые обрабатывают различные области состояния с помощью своего собственного действия по смене ключа. Когда я смотрю на инструменты Redux Dev, он показывает ключи, добавленные в состояния, которых там быть не должно, что не имеет смысла. Например, если у меня был редуктор для входа в систему, действие которого изменяет ключ isLoggedIn
, этот ключ также добавляется к вышеуказанному редуктору, что не имеет никакого смысла.
Вот код для другого редуктора:
const CHANGE_LOGIN_KEY = "CHANGE_LOGIN_KEY";
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case CHANGE_LOGIN_KEY:
return {
...state,
[action.payload.key]: action.payload.value,
};
default:
return state;
}
};
const changeKeyInLoginState = (key, value) => ({ type: CHANGE_LOGIN_KEY, payload: { key, value } });
Я вижу это только в инструментах Redux Dev. Я не знаю, что происходит. Может кто-нибудь помочь мне разобраться в чем проблема?