redux “reducer”是一个必选参数,并且必须是一个函数或函数的对象,可以传递给combineReducers,error如何解决这个问题?

6pp0gazn  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(124)

所以我使用redux工具包创建了一个卡片,这是features/store.js

import { configureStore } from "@reduxjs/toolkit";
import {cardReducer} from "./cardSlice";

const store = configureStore({
   reducer: cardReducer
});

export default store;

并导出到main.jsx

import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App'
import './index.css'
import { Provider } from 'react-redux';
import  store  from './features/store.js';

ReactDOM.createRoot(document.getElementById('root')).render(
  <React.StrictMode>
    <Provider store={store}>
      <App />
    </Provider>
  </React.StrictMode>,
)

这也是cardSlice.js文件

import { createSlice } from '@reduxjs/toolkit';

const cardSlice = {
    name: 'card',
    initialState: {
        cards: [],
    },
    reducers: {
        createCard: (state, action) => {
            cards: [
                ...state.cards,
                {
                    id: state.cards.length + 1,
                    name: action.payload.name,
                }
            ]
        }
    }
}

export const cardReducer = cardSlice.reducer
export const createCard = cardSlice.actions

我已经检查了几次并检查了堆栈溢出的答案,但无法解决此错误。

ao218c7q

ao218c7q1#

您导入了createSlice,但没有使用它。
如果你创建一个切片,它必须createSlice fn内。

import { createSlice } from '@reduxjs/toolkit';

const cardSlice = createSlice({
    name: 'card',
    initialState: {
        cards: [],
    },
    reducers: {
        createCard: (state, action) => {
            cards: [
                ...state.cards,
                {
                    id: state.cards.length + 1,
                    name: action.payload.name,
                }
            ]
        }
    }
});

export const cardReducer = cardSlice.reducer
export const createCard = cardSlice.actions

**作为一个好的实践,你应该在{}中导出你的createCard,因为你需要创建更多的reducer,如delete,edit等。

export const {createCard, futureReducers...} = cardSlice.actions

相关问题