如何在redux中控制布尔值



我似乎无法调度布尔值。有人能告诉我我做错了什么吗?

这是我的状态:

const initState = {
allSongs: songData(),
currentSong: { ...songData()[0] },
isPlaying: false,
};

如何使用调度功能控制isPlaying当我这样发送它时,它不起作用:

dispatch(playAndPause(true));

这是我的行动创造者:

export const playAndPause = (isPlayingBool) => (dispatch) => {
return {
type: PLAY_AND_PAUSE,
payload: {
isPlaying: isPlayingBool,
},
};
};

减速器:

case PLAY_AND_PAUSE:
return {
...state,
isPlaying: action.payload.isPlaying,
};

playAndPause不是普通的动作创建者,而是一个thunk动作创建者。将调用最内部的函数,并允许您在实际调度之前执行异步操作。如果您想要走那条路线,正确的方法是

export const playAndPause = (isPlayingBool) => (dispatch) => {
// do some stuff here
dispatch({
type: PLAY_AND_PAUSE,
payload: {
isPlaying: isPlayingBool,
},
});
};

但实际上,你可能想要一个正常的动作创造者:

export const playAndPause = (isPlayingBool) => ({
type: PLAY_AND_PAUSE,
payload: {
isPlaying: isPlayingBool,
},
});

另外,请注意,你在这里写的是一个相当古老的叠字风格。如果你现在正在学习redux,请停止你正在学习的任何教程,转而学习官方教程。最后,您将使用当前使用的样式编写1/4的代码。

例如,现代redux不需要编写任何动作创建者或动作类型常量。它也没有开关。。。大小写减少器或减少器中的不可变逻辑。

最新更新