使用CombineReducers时状态未定义

时间:2019-04-03 15:49:55

标签: reactjs typescript redux

我正在研究React打字稿项目,并尝试设置redux。

目前,我已将减速器分为两部分,并使用combineReducers进行组合。

奇怪的是,运行我的应用程序时,state是未定义的(我正在记录this.props,但没有任何值。

我可以看到这些动作是使用redux-devtools分派的,但是那根本行不通。

如果我将减速器移到索引文件中,一切似乎都可以正常工作。

我无法理解...

请帮助!

我真的尝试了一切!整天都在。如前所述,不使用CombinedReducers可以解决此问题。

Reducer 1

const initState = []

const imageResults = (state = initState, action) => {
    switch (action.type) {
        case 'SEARCH_IMAGES' :
            return [...state, action.payload]
        default:
            return state;
    }
}

export default imageResults;

Reducer 2

const initState = {
    term: "initial term"
}

const client = (state = initState, action) => {
    console.log(action.payload)
    switch (action.type) {
        case 'UPDATE_TERM' :
        return {
            ...state,
            term: action.payload
        }
        default:
        return state;
    }
}

export default client;

组合的减速器文件

import {combineReducers} from 'redux';

import imageResults from './imageResults';
import client from './imageResults';

const reducer = combineReducers({
    imageResults: imageResults,
    client: client
})

export default reducer;

当应用程序加载时,我希望 {term:“初始术语”,searchImages:ƒ,updateTerm:ƒ}

相反,我得到:{term:未定义,searchImages:ƒ,updateTerm:ƒ}

我的状态也应如下所示:

imageResults:{term: "initial term"}
client(pin): []

但是它看起来像这样: imageResults:[] 客户:[]

2 个答案:

答案 0 :(得分:0)

问题在这段代码中:

import imageResults from './imageResults';
import client from './imageResults';

我相信通往客户的道路应该有所不同

import client from './client';

请尝试传递有效的文件名

答案 1 :(得分:0)

也许您输入错误?

import client from './client';