【问题标题】:How to use dispatch in createSlice reducer?如何在 createSlice reducer 中使用 dispatch?
【发布时间】:2020-09-02 03:54:18
【问题描述】:

例如,我有这个 slice,我想在 setUser 中使用 dispatch。我该怎么做?

const contactsSlice = createSlice({
  name: 'contacts',
  initialState: initialState,
  reducers: {
    setUsers: (state, { payload }) => {
      // I want to use dispatch here
      dispatch()
    },
    toggleFavorite: (state, { payload }) => {
      //
    },
    toggleCheck: (state, { payload }) => {
      //
    }
  }
})

【问题讨论】:

    标签: reactjs redux react-redux redux-toolkit


    【解决方案1】:

    你不能,你在 dispatch 函数不可用的地方实现了一个减速器。阅读 reducers are 的内容。

    相反,在 React 代码中添加逻辑:

    useEffect(() => {
      dispatch(contactsSlice.actions.setUser());
      dispatch(loginSlice.actions.logicAction());
    }, []);
    

    或者,在目标切片中添加一个额外的reducer。

    const contactsSlice = createSlice({
      name: "contacts",
      initialState: initialState,
      reducers: {
        setUsers: (state, { payload }) => {
          // setUsers logic
        },
      },
    });
    
    const loginSlice = createSlice({
      name: "login",
      initialState: initialState,
      extraReducers: {
        "contacts/setUsers": (state, { payload }) => {
          // Same logic
        },
      },
    });
    

    或者编写一个中间件,例如createAsyncThunkdispatchgetState 函数在thunkAPI 下可用。

    【讨论】:

      猜你喜欢
      • 2021-01-01
      • 2021-12-28
      • 2020-11-08
      • 2020-09-21
      • 2021-11-29
      • 2020-12-10
      • 2022-11-14
      • 2021-04-06
      • 1970-01-01
      相关资源
      最近更新 更多