我似乎无法调度布尔值。有人能告诉我我做错了什么吗?
这是我的状态:
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不需要编写任何动作创建者或动作类型常量。它也没有开关。。。大小写减少器或减少器中的不可变逻辑。