重修动作复位--状态相等

问题描述 投票:0回答:1

我的React Redux的初始状态如下。

const inistialStateRedux = {
  configuredFilters: {
    data: {
      countries: [],
      divisions: [],
      companies: [],
      locations: [],
      fields: [],
      search: '',
    },
  },
};

现在我想创建一个RESET减速器。

它看起来是这样的,但Redux Devtools显示,这些状态是相等的。

export const createReducer = (initialState, handlers) => (
  state = initialState,
  action
) => {
  if (action.type in handlers) {
    return handlers[action.type](state, action);
  }
  return state;
};

export const multiUse = (reducer, name = '') => (state = null, action) => {
  if (action.name !== name) return state;

  return reducer(state, action);
};

import {
  createReducer
} from '../helper';
import * as Action from './actions';
import inistialStateRedux from '../inistialStateRedux';

export default createReducer({
  data: {},
}, {
  [Action.RESET_CONFIGURED_FILTERS]: (state) => ({
    ...state,
    data: {
      ...inistialStateRedux.configuredFilters.data,
    },
  }),
});

但Redux Devtools显示,这些状态是相等的。我做错了什么?

javascript reactjs reducers
1个回答
0
投票

在Actions中,你可以使用一个调度器来重置表格,像这样。

import axios from 'axios';
import { ADD} from '../modelType';
import { reset } from 'redux-form'; 


export const add= formValues => async dispatch => {
  const res = await axios.post('/api/model/', { ...formValues });
  dispatch({
    type: ADD,
    payload: res.data
  });
  dispatch(reset('yourUniqueFormName'));
};
© www.soinside.com 2019 - 2024. All rights reserved.