Я изучаю Redux, и у меня есть два редьюсера: contactReducer для отображения контактов на странице и testReducer, с которым можно просто возиться. В одном из моих файлов компонентов у меня есть эта функция:
const mapDispatchToProps = (dispatch) => ({
getContacts: () => dispatch({ type: "TEST_ACTION" }),
});
Это два моих файла редуктора: contactReducer:
import { GET_CONTACTS } from "../actions/types";
const initialState = {
contacts: [
{
id: 1,
name: "John Doe",
email: "[email protected]",
phone: "555-555-5555",
},
{
id: 2,
name: "Karen Williams",
email: "[email protected]",
phone: "444-444-4444",
},
{
id: 3,
name: "Henry Johnson",
email: "[email protected]",
phone: "333-333-333",
},
],
};
export default function (state = initialState, action) {
switch (action.type) {
case GET_CONTACTS:
return {
...state,
};
default:
console.log("testing action in contactReducer");
return state;
}
}
и тестредьюсер:
import { GET_CONTACTS } from "../actions/types";
const initialState = {
contactsTest: [
{
id: 1,
name: "ffffffffffff",
email: "[email protected]",
phone: "555-555-5555",
},
{
id: 2,
name: "ggggggggggggg",
email: "[email protected]",
phone: "444-444-4444",
},
{
id: 3,
name: "aaaaaaaaaaaaaa",
email: "[email protected]",
phone: "333-333-333",
},
],
};
export default function (state = initialState, action) {
switch (action.type) {
case "TEST_ACTION":
return {
...state,
};
default:
console.log("testing action");
return state;
}
}
Итак, что я заметил из операторов console.log в файлах редуктора, так это то, что для каждого контакта функция contactReducer и testReducer вызывалась с этой строкой:
getContacts: () => dispatch({ type: "TEST_ACTION" }),
});
Что, если у меня есть несколько редьюсеров, но я хочу вызвать только одну из их функций для отправки, что мне делать?
type
вашего действия должно быть уникальным для всех ваших редюсеров. В Redux все редукторы хранилища обрабатывают каждое действие, поэтому случай по умолчанию просто возвращает предыдущее состояние. - person cbr   schedule 02.06.2020