【发布时间】:2019-09-20 21:48:19
【问题描述】:
下面是我的状态对象
{
"customerdata":[
{
"name":"COMPANYNAME",
"title":"Company Name",
"isvisible":false,
"Attrib":{
"caption":"",
"TextWrap":"",
"Bold":false,
"Italic":false,
"Font Name":"",
"FontSize":"",
"FontColor":"",
"BackGroundColor":"",
"Height":"",
"Width":""
}
},
{
"name":"CONTACT_FULL_NAME",
"title":"Contact Name",
"isvisible":false,
"Attrib":{
"caption":"",
"TextWrap":"",
"Bold":false,
"Italic":false,
"Font Name":"",
"FontSize":"",
"FontColor":"",
"BackGroundColor":"",
"Height":"",
"Width":""
}
},
{
"name":"PHONENUMBER",
"title":"Phone Number",
"isvisible":false,
"Attrib":{
"caption":"",
"TextWrap":"",
"Bold":false,
"Italic":false,
"Font Name":"",
"FontSize":"",
"FontColor":"",
"BackGroundColor":"",
"Height":"",
"Width":""
}
},
{
"name":"INDUSTRYTYPE",
"title":"Industry Type",
"isvisible":false,
"Attrib":{
"caption":"",
"TextWrap":"",
"Bold":false,
"Italic":false,
"Font Name":"",
"FontSize":"",
"FontColor":"",
"BackGroundColor":"",
"Height":"",
"Width":""
}
},
{
"name":"ADDRESS_CITY",
"title":"Address City",
"isvisible":false,
"Attrib":{
"caption":"",
"TextWrap":"",
"Bold":false,
"Italic":false,
"Font Name":"",
"FontSize":"",
"FontColor":"",
"BackGroundColor":"",
"Height":"",
"Width":""
}
},
{
"name":"FOLLOWUP",
"title":"Follow Up",
"isvisible":false,
"Attrib":{
"caption":"",
"TextWrap":"",
"Bold":false,
"Italic":false,
"Font Name":"",
"FontSize":"",
"FontColor":"",
"BackGroundColor":"",
"Height":"",
"Width":""
}
},
{
"name":"IID",
"title":"IID",
"isvisible":false,
"Attrib":{
"caption":"",
"TextWrap":"",
"Bold":false,
"Italic":false,
"Font Name":"",
"FontSize":"",
"FontColor":"",
"BackGroundColor":"",
"Height":"",
"Width":""
}
},
{
"name":"HASMORELINKS",
"title":"Has More Links",
"isvisible":false,
"Attrib":{
"caption":"",
"TextWrap":"",
"Bold":false,
"Italic":false,
"Font Name":"",
"FontSize":"",
"FontColor":"",
"BackGroundColor":"",
"Height":"",
"Width":""
}
},
{
"name":"ISNEWOREDITED",
"title":"Is Now Order",
"isvisible":false,
"Attrib":{
"caption":"",
"TextWrap":"",
"Bold":false,
"Italic":false,
"Font Name":"",
"FontSize":"",
"FontColor":"",
"BackGroundColor":"",
"Height":"",
"Width":""
}
},
{
"name":"BASECURRENCYIID",
"title":"Base Currency",
"isvisible":false,
"Attrib":{
"caption":"",
"TextWrap":"",
"Bold":false,
"Italic":false,
"Font Name":"",
"FontSize":"",
"FontColor":"",
"BackGroundColor":"",
"Height":"",
"Width":""
}
}
],
"isAttrcall":true,
"linedata":{
"name":"COMPANYNAME",
"title":"Company Name",
"isvisible":false,
"Attrib":{
"caption":"",
"TextWrap":"",
"Bold":false,
"Italic":false,
"Font Name":"",
"FontSize":"",
"FontColor":"",
"BackGroundColor":"",
"Height":"",
"Width":""
}
}
}
我将第 0 个索引数据传递给另一个组件,在那里我正在更新值并将更新后的值返回给主组件。
{
"name":"COMPANYNAME",
"title":"Company Name",
"isvisible":false,
"Attrib":{
"caption":"adasd",
"TextWrap":"",
"Bold":false,
"Italic":false,
"Font Name":"",
"FontSize":"",
"FontColor":"",
"BackGroundColor":"",
"Height":"",
"Width":""
}
}
如何更新主状态?
在此示例中,我将标题更新为“adasd”。
需要帮助...
我尝试在主组件中打印控制台日志,我可以看到这些值。
这是来自子组件的数据
{
"_state": {
"data": {
"linedata": {
"name": "COMPANYNAME",
"title": "Company Name",
"isvisible": false,
"Attrib": {
"caption": "adasd",
"TextWrap": "",
"Bold": false,
"Italic": false,
"Font Name": "",
"FontSize": "",
"FontColor": "",
"BackGroundColor": "",
"Height": "",
"Width": ""
}
}
}
}
}
【问题讨论】:
-
欢迎来到stackoverflow。请向我们展示您迄今为止为更新状态所做的尝试。
-
这是一个间接答案(hints),所以你必须谷歌它。首先获取状态对象并搜索必要的公司。如果存在,请将其保存在变量中或根据需要更新其标题和其他属性。然后在 setState 中设置这个新/修改状态并更新状态。您还必须考虑添加新公司价值的情况。请注意,请确保您使用不变性的概念。对象是使用引用复制的,所以如果直接使用会有副作用
-
你能摆脱数组,只将你的状态重组为一个对象吗?我认为这会使更新状态更容易。在这个主题上检查我的question
标签: reactjs