【发布时间】:2017-10-03 19:52:43
【问题描述】:
我的state 看起来像这样:
brands:[{key:'0', cars:[]}, {key:'2', cars:[]}, {key:'3', cars:[]}]
每个car 数组的格式为:
[{key:'0', color:'Red', detail:''}, {key:'1', color:'Green', detail:''}]
我将每个品牌列表映射到一个组件<Brand cars={brand.cars}>
每个品牌将其汽车映射到:
<Car color={car.color} detail:"" fetchDetailCallback={this.carDetailCallback}>
单击汽车时,会在父级上调用 fetchDetailCallback 回调,从我的数据库中获取有关汽车的更多详细信息。
然后如何更新状态以填写这些详细信息?
function carDetailCallback(brandKey, carKey){
//fetch detail from database code here
this.setState({brands[brandKey][carKey]: detail})
}
当然this.setState({'sentences'[brandKey][carKey]: detail}) 不起作用,因为键不是真正的键,它们是数组中名称-值对的名称。
我应该如何在状态中引用正确的Car 以更新它?
我是否必须在 Brands 中搜索以找到具有匹配 Key 的汽车,然后在该 Brand 中搜索 Cars 以找到具有匹配 CarKey 的汽车,然后将整个 Brand 替换为 this.setState() 一次我更新它?这似乎是更新状态值的漫长道路。
【问题讨论】:
-
既然你用的是React,那你肯定用的是babel。试试
{ [sentences[brandKey][carKey]]: detail } -
我的意思是说键在状态的数据结构中不是这样工作的,所以我如何在状态中找到并更新正确的“汽车”。
-
redux.js.org/docs/basics/Reducers.html 只需搜索减速器组合即可。或许这会帮助你理解它
-
谢谢,但有人建议我先学习在没有 Redux 的情况下构建我的 React 应用程序,然后再学习?
标签: javascript reactjs state