#reactjs #redux #react-redux
#reactjs #сокращение #react-redux
Вопрос:
У меня есть несколько компонентов React (представлений), которые отображают табличные данные. Теперь я хочу инкапсулировать код для запроса / сортировки / обновления данных в таблицах в отдельный компонент, который можно использовать в моих представлениях. Видимая часть для меня не проблема, но как я могу создать компонент, который можно использовать в redux Store?
// Reducer 1
const emptyPart1 = {data: {id: 1, rows[]}}; // id is one more possible way to find data object
export function part1(state = emptyPart1, action){
switch(action.type) {
}
return state;
}
// Reducer 2
const emptyPart2 = {data: {id: 2, rows[]}};
export function part2(state = emptyPart2, action){
switch(action.type) {
}
return state;
}
const reducers = {
part1, part2
};
const store = createStore(
combineReducers(reducers)
);
После создания хранилища я хочу сгенерировать некоторое действие, которое должно заполнить данные part1 строками:
store.dispatch({type: ACTION_FILL_DATA, data: store.getState().part1.data});
Здесь я использую ссылку на объект данных. Этот объект никогда не будет воссоздан заново, но будут изменены только его строки
Я хочу иметь какой-то внешний редуктор / промежуточное программное обеспечение, которое не является родительским для reducer1 / 2, которое будет обрабатывать действие ACTION_FILL_DATA и будет part1.data со строками.
Как это сделать?
Комментарии:
1. Вы имели в виду, что вам нужна функция обработки данных до того, как действие попадет в хранилище? Как вы сказали, промежуточное программное обеспечение будет работать, в чем проблема?
2. @StanleyLuo, мне нужно изменить данные в хранилище. Промежуточное программное обеспечение имеет доступ к хранению, отправке и действию. Мне нужно сделать это: промежуточное программное обеспечение()-> store.state = newstate. Я не нашел никаких документов о том, как изменить состояние с помощью промежуточного программного обеспечения
3. Промежуточное программное обеспечение не должно изменять хранилище напрямую, фактически, только действия могут изменять состояние хранилища. В вашем случае вы могли бы подготовить данные в промежуточном программном обеспечении, а затем отправить действие в промежуточном программном обеспечении, которое может заполнить данные в хранилище
4. Для этого мне нужно будет добавить определенный обработчик действий в каждый редуктор, который имеет доступ к таблице данных. Я хочу удалить его и поместить во внешний компонент кода