У меня есть 2 редуктора (количество и поиск), которые я объединил. Когда компонент поиска отправляет оба редуктора, вызываются.
- Это ожидаемое поведение, которое называется все редукторы?
- Или следует вызывать только самый конкретный c редуктор (т. Е. Поиск)? Что я должен сделать, чтобы получить только самый конкретный c редуктор для вызова?
Вот поиск, подсчет и комбинированные редукторы
const initialState = {url:'...'};
function search(state = initialState, action) {
if (action.type === 'SEARCH') {
...
return state;
}
return state;
}
export default search;
.
const initialState = 0;
function count(state = initialState, action) {
if (action.type === 'INCREMENT') {
return state + 1;
}
if (action.type === 'DECREMENT') {
return state - 1;
}
return state;
}
export default count;
.
import CountReducer from './CountReducer.js';
import SearchReducer from './ApiReducer.js';
import { combineReducers } from 'redux'
const reduce = combineReducers({
count: CountReducer,
search: SearchReducer
});
export default reduce;
Компонент поиска выглядит следующим образом
import React, { Component } from 'react';
import { onSearch as onSearchAction } from '../store/actions/Actions.js';
import { connect } from 'react-redux';
class Search extends Component {
render() {
return (
<>
....
</>
);
}
}
const mapStateToProps = (state) => {
return { url: state.url };
}
const mapDispatchToProps = (dispatch, ownProps) => {
return { onSearch: () => dispatch(onSearchAction()) };
};
const ConnectedSearch = connect(mapStateToProps, mapDispatchToProps)(Search);
export default ConnectedSearch;
А вот поисковое действие
export function onSearch() {
return {
type: "SEARCH",
url: '...'
}
}