React-сокращение единого редуктора / промежуточного программного обеспечения для всех табличных данных

#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. Для этого мне нужно будет добавить определенный обработчик действий в каждый редуктор, который имеет доступ к таблице данных. Я хочу удалить его и поместить во внешний компонент кода