首页 > 解决方案 > 文件树归约器中的状态未定义

问题描述

我只想从我的 reducer 返回一个对象数组,但useSelect()返回 undefined

减速器/目录/index.js:

export * from './reportDir'

减速器/目录/reportDir.js:

const reportDir = [
{
    type: 'cat',
    name: 'گزارش ها',
    childrens: [
        {
            type: 'folder',
            name: 'گزارش های اپراتور',
            childrens: [
                {type: 'file', name: 'گزارش شنود', route: '/listen', id: 1}
            ]
        },
        {
            type: 'folder',
            name: 'گزارش مالی',
            childrens: [
                {type: 'file', name: 'مالی', id: 2}
            ]
        }
    ]
}
 ]

 const reportDirReducer = (state = reportDir) => {
  return state
 }

 export default reportDirReducer

减速器/index.js:

import { combineReducers } from 'redux'
import newTabReducer from './newTabReducer' 
import fileReducer from './fileReducer'
import tableReducer from './tableReducer'
import { authentication } from './authenticationReducer';
import { alert } from './alertReducer';
import { listen } from './reportOpReducer';
import { reportDirReducer } from './directories';

export default combineReducers({
 newTabReducer, fileReducer, authentication, 
    tableReducer, alert, listen, reportDirReducer
})

这是我为我的 react 应用程序创建的一个简单的目录路径,我不知道我为什么undefined要从中获取reportDirReducer

标签: javascriptreactjsreduxredux-reducers

解决方案


您的文件正在查找名称为inreducer/index.js的命名导出。此变量不存在,因为 reducer 是默认导出,而不是命名导出。使用时它基本上会“丢失” 。reportDirReducer'./directories'export *


在您的reducer/directories/index.js中,请改用:

export { default as reportDirReducer } from './reportDir';

我们导入默认导出,'./reportDir'reducer 就是从中导入的。然后我们将其重新导出为命名的 export reportDirReducer


另一种解决方案是保持reducer/directories/index.js文件与现在相同,并更改reducer/directories/reportDir.js为使用命名导出而不是默认导出。

export const reportDirReducer = (state = reportDir) => {
  return state;
};

推荐阅读