Reactjs Redux reducer返回未定义的错误,即使它被初始化为null

Reactjs Redux reducer返回未定义的错误,即使它被初始化为null,reactjs,redux,Reactjs,Redux,我的Redux减速机有问题。在selectedSongReducer中,selectedSong被定义为null,因此它不会返回错误,但我仍然得到以下错误:错误:Reducer“selectedSong”在初始化期间返回未定义。如果传递给减速器的状态未定义,则必须显式返回初始状态。初始状态可能不是未定义的。如果不想为此减速器设置值,可以使用null而不是undefined 以下是减速器代码: import { combineReducers } from 'redux'; const song

我的Redux减速机有问题。在selectedSongReducer中,selectedSong被定义为null,因此它不会返回错误,但我仍然得到以下错误:错误:Reducer“selectedSong”在初始化期间返回未定义。如果传递给减速器的状态未定义,则必须显式返回初始状态。初始状态可能不是未定义的。如果不想为此减速器设置值,可以使用null而不是undefined

以下是减速器代码:

import { combineReducers } from 'redux';

const songsReducer = () => {
    return [
        { title: 'A' , length: '4:05' },
        { title: 'B' , length: '2:30' },
        { title: 'C' , length: '3:15' },
        { title: 'D' , length: '1:45' },
    ]
};

const selectedSongReducer = (selectedSong = null, action) => {
    if(action.type = 'SONG_SELECTED') {
        return action.payload;
    }
    return selectedSong;
}

export default combineReducers({
    songs: songsReducer,
    selectedSong: selectedSongReducer
})

有人对问题可能出在哪里有什么建议吗?

您不小心使用了赋值运算符,而没有在此处比较值
如果(action.type='SONG_SELECTED')。它将始终被执行。

您无意中使用了赋值运算符,而不是在此处比较值
如果(action.type='SONG_SELECTED')。它将永远被执行。

我真不敢相信我没有看到这一点。非常感谢你指出这一点。我不敢相信我没有看到这一点。非常感谢你指出这一点。