javascript - Redux Store:无法读取属性并且存储未定义
问题描述
我开始使用 redux 在一个 redux 项目中工作,这完全是一团糟,我设置了一个 Store 作为接口,如下所示:
interface Store {
ads: {
loading: boolean;
data: Ad[];
errors: Error;
isPro: boolean;
};
}
interface Ad {
id: any;
title: any;
body: any;
price: any;
latitude: any;
longitude: any;
}
我将此常量称为要在之后调度的操作:
export const TYPE_ADD_JOB_ANNOUNCEMENT_REQUEST = "action/addJobAnnouncementRequest";
然后我有我的减速器:
import {
TYPE_ADD_JOB_ANNOUNCEMENT_REQUEST,
} from "../constants/actions";
export const reducer = (Store: Store, action: any) => {
switch (action.type) {
case TYPE_ADD_JOB_ANNOUNCEMENT_REQUEST:
console.log("Test");
return {
...Store,
annuncio: [...Store.ads.data, action.payload]
};
default:
console.log("dont return nothing");
break;
}
return Store;
};
我已经 ReduxDevTools 工作了,我用不同的控制台日志对其进行了测试,它工作正常,现在为什么当 reduxdevotools 尝试使用有效负载分派一个动作时,(例如:
{
type: 'action/addJobAnnouncementRequest',
payload: { title: "test" }
}
如果我尝试不同的测试但使用相同的模式,它会给我不同的错误,比如
商店未定义,
或者
无法读取属性“广告”
我认为我的 javascript 语法有问题,或者我不知道,谁能帮助我?
解决方案
您还应该初始化您的状态对象,因为它看起来就是您的错误ads
来自的地方。如果您选择,您可以使用store
orStore
代替。state
const initialState: Store = {
ads: {
loading: false,
data: [],
errors: '',
isPro: false,
};
}
export const reducer = (state = initialState, action: any) => {
switch (action.type) {
case TYPE_ADD_JOB_ANNOUNCEMENT_REQUEST:
return {
...state,
ads: [...state.ads.data, action.payload] // I'm assuming you meant `ads` here?
};
default:
return state;
}
};
推荐阅读
- spring-mvc - 无法从 persistence.xml 找到持久性提供程序
- angularjs - AngularJS 编译动态内容
- javascript - 在 jQuery 中使用正确的选择器无需重复代码
- drupal-7 - 在新节点 create 上,Drupal 给出错误消息“可能未引用图像字段中使用的文件。”
- arrays - 我可以使用 UnsafePointer.withMemoryRebound 将 [UInt8] 重新映射到 [UInt16] 吗?
- google-oauth - 如何查找用户的电子邮件 ID?- 谷歌 Oauth2 API PHP 客户端
- azure-api-management - URL 模板参数在 APIM 中不起作用
- azure - Azure 上的大 JSON 流
- typescript - 用嵌套类创建类的最佳方法是什么?
- react-native - React Native中有数组时如何选中复选框?