javascript - Redux 操作未触发 - 没有错误
问题描述
我试图在点击时调用一个简单的动作来触发调度动作。我似乎无法得到结果,甚至没有迹象表明它正在发射。
我正在尝试在组件中单击时分派。我还尝试在操作中放置一个 console.log 以查看它是否甚至被触发,但它没有。Redux 开发工具也不建议它在点击时被触发。
onClick={() => {
setAQIType(name);
}}
行动:
import { SET_AQITYPE } from "./types";
export const setAQIType = (AQIType) => dispatch => {
dispatch({
type: SET_AQITYPE,
payload: { AQIType }
});
};
减速器:
import { SET_AQITYPE } from '../actions/types';
const initialState = {
aqiType: 'DEFAULT',
loading: false,
};
export default function(state = initialState, action){
const { type, payload } = action;
switch(type){
case SET_AQITYPE:
return [...state, payload];
default:
return state;
}
}
类型:
export const SET_AQITYPE = 'SET_AQITYPE';
解决方案
三个错误,
- 在 reducer 中:您的状态是一个
object
而不是一个列表。 - 在减速器中:将有效负载分配给
aqiType
键 - 在调度中:有效负载是一个字符串而不是一个对象。
修理:
export const setAQIType = (AQIType) => dispatch => {
dispatch({
type: SET_AQITYPE,
payload: AQIType // (3) pass as string
});
};
// In reducer
case SET_AQITYPE:
return { // (1) object
...state,
aqiType: payload // (2) specify aqiType key
};
这假设您已经使用和检查了基本示例。connect()
mapDispatchToProps
推荐阅读
- java - 使用 Jackson ObjectMapper 抛出 OutOfMemoryError
- sql-injection - 从 POST 到 GET 的转换
- reactjs - reactjs给出错误模块未找到
- javascript - 带有特定字符串和之后任意数量的字符的正则表达式
- angular - 如何以角度删除动态生成的类名
- wordpress - 如何在 TYPO3 网站的导航栏中集成 Wordpress 博客
- linux - 链接器如何将程序头添加到可重定位文件?
- c++ - QT将图像从缩略图拖放到网格布局(QVTKOpenGLWidget)?
- python - 你能做出这样的字典吗?(使用外部 .txt 文件)
- c++ - 在c ++ mfc vs2015中获取弹出资源菜单项的ID