project中使用reducer和effect之后报错问题,有几点疑问。

来源:7-7 实战项目信息流(下)

Maych

2018-01-08

//img.mukewang.com/szimg/5a530be0000144da19340598.jpg

第一个问题:project.reudce中请求回来的是数组对象,但是loadproject返回的数据不是数组型的。导致project-list模板无法循环遍历从而导致报错。老师代码redux之后是project所需要的数组,我的代码redux之后返回的是对象。我不知道在什么地方少了什么逻辑。麻烦老师帮忙解答一下。

//img.mukewang.com/szimg/5a530c650001cbf616901454.jpg

第二点:总感觉视屏里的代码片段有丢失,看老师Git的代码又更新太快和视屏里的代码变化太大。自己对比代码排错不好排。

//img.mukewang.com/szimg/5a530dbc00016e9309320246.jpg

//img.mukewang.com/szimg/5a530dbd0001c88714800890.jpg

第三点:project.reduce里面的默认值和Project所需要的数据类型都不一样,一个是数组类型,一个是json对象。我不知道老师的代码是如何能通过编译,前端能跑起来的。project-list的循环遍历是怎么遍历出来正确数据的。

麻烦老师帮忙解答一下。

//img.mukewang.com/szimg/5a5437cc000166c224201766.jpg

看老师的代码redux后的数据projects也是对象型的, 请问老师是在什么地方转换成project-list所需要的数组型数据。完全没找到代码逻辑在什么地方。

写回答

1回答

接灰的电子产品

2018-01-09

state 本来就是对象啊,如果需要数组,需要使用 selector 进行转换啊,比如 下面的selector 就返回了一个 数组啊

state: State {
  ids: string[];
  entities: {[id: string]: any}
}
export const exampleSelector = (state: State) => state.ids.map(id => entities[id]);


0
1
Maych
非常感谢!已解决
2018-01-09
共1条回复

Angular打造企业级协作平台,让你在Angular领域中出类拔萃

全网首个介绍官方 Material 组件库用法与 Redux 在 Angular 中的应用

998 学习 · 536 问题

查看课程