【问题标题】:initialState of Slice in redux returns undefinedredux 中 Slice 的 initialState 返回 undefined
【发布时间】:2022-01-19 10:26:43
【问题描述】:

我收到此错误 Uncaught TypeError: Cannot read properties of undefined (reading 'subreddits') 这是指我定义 selectSubreddit 的最后一行代码,我将 subreddit 初始状态设置为空对象,为什么是未定义的?谁能给我解释一下

SubredditSlice.js

import { createSlice} from '@reduxjs/toolkit';
import { getSubreddits } from '../api';


const subredditSlice = createSlice({
    name: 'subreddits',
    initialState: {
        subreddits: {},
        isPending: false,
        isfailed: false,
    },
    reducers: {
        getSubredditsPending(state) {
            state.isPending = true;
            state.isfailed = false;
        },
        getSubredditsfulfilled(state, action) {
            state.subreddits = action.payload;
        },
        getSubredditsFailed(state) {
            state.isLoading = false;
            state.isfailed = true;
        }
    }
})

export const fetchSubreddits = () => async  (dispatch) => {
    try {
        dispatch(getSubredditsPending());
        const subreddits = await getSubreddits();
        dispatch(getSubredditsfulfilled(subreddits));
    } catch (error) {
        dispatch(getSubredditsFailed);
    }
} 

export const {getSubredditsPending, getSubredditsfulfilled, getSubredditsFailed} = subredditSlice.actions;

export default subredditSlice.reducer;
export  const selectSubreddit = (state) => state.subreddits.subreddits;

store.js

import { configureStore} from "@reduxjs/toolkit";
import subredditReducer from './subredditSlice';

export default configureStore({
    reducer: {
        subreddit: subredditReducer,
    }
})

index.js

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

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

【问题讨论】:

    标签: javascript redux react-redux slice


    【解决方案1】:

    您的选择器正在访问state.subreddits.subreddits,但您在configureStore 调用中将切片添加为subreddit,因此它应该访问state.subreddit.subreddits

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 2020-12-11
      • 2017-08-18
      • 1970-01-01
      • 2021-12-28
      • 2021-07-12
      相关资源
      最近更新 更多