我真的在努力解决看似简单的问题。我在React工作并尝试将变量设置为传递的状态。
这是传递的JSON
{
"id": "6",
"FName": "Chris",
"LName": "Baker",
"Height": "6'2",
"Meds": [
{
"MedicationName": "acetaminophen",
"Doseage": "Take 2 daily with food",
"NumRefills": 2,
"RefillExp": "2017-05-31T15:38:50.02Z",
"FirstPrescribed": "2017-05-31T15:38:50.02Z",
"WFID": "string"
}
]
}
我能够在父级别设置变量,例如....
class App extends ReactComponent {
....
render() {
return (
....
<OverviewPane overview={this.state.PATIENT}/>
....
);
}
}
然后在概述窗格中,我能够根据预期的JSON数据设置字段。 (见下文)
class OverviewPane extends ReactComponent {
....
render() {
return (
....
<td>{this.props.overview.map(function(P){return <label key={P.id}> First Name: {P.FName}</td>
....
);
}
}
但是我无法获得Meds所以我尝试的是以下内容......
class App extends ReactComponent {
....
render() {
return (
....
<MedicationsPane meds={this.state.PATIENT.Meds[0]}/>
....
);
}
}
在药物治疗窗格中......
class MedicationsPane extends React.Component {
...
render () {
return (
<List>
{this.props.meds.map(function(Meds) {
return <ListItem justify='between' separator='horizontal' key={Meds.MedicationName}>{Meds.MedicationName}</ListItem>;
})}
</List>
);
}
}
当我执行上述操作时,我会收到错误&#34;无法读取属性&#39; 0&#39;未定义的。知道如何从JSON中提取药物吗?
答案 0 :(得分:1)
我收到错误“无法读取未定义的属性'0'。
OverviewPane
组件建议this.state.PATIENT
作为数组,因此Meds
访问this.state.PATIENT.Meds
将导致undefined
(除非有Meds
PATIENT
数组上的}属性,错误也是如此。
为避免这种情况,您可以
class App extends ReactComponent {
....
render() {
return (
....
{this.state.PATIENT.map(p => {
return (p.Meds && p.Meds.length > 0) ? <MedicationsPane meds={p.Meds}/> : null;
})}
....
);
}
}
其次,您将药物详细信息作为MedicationsPane
发送至overview
,并将其作为this.props.meds
访问。将它们改为同名。
答案 1 :(得分:1)
您将this.state.PATIENT
传递给OverviewPane
overview
。
在OverviewPane
中,您overview
上的映射表明this.state.PATIENT
是一个数组。
但是,使用MedicationsPane
时,您将this.state.PATIENT
视为具有Meds
属性的对象。如果this.state.PATIENT
是一个数组,则您应该Meds
this.state.PATIENT[PATIENTINDEX].Meds[0]
属性