我正在尝试从表单字段数组构建表单,其中每个表单字段如下所示:
{
"name": "state",
"resource": "customer",
"type": "TextBox",
"assetId": "State",
"label": {
"text": "State",
"assetId": "Label"
}
}
但是,当我尝试使用 JSX 对其进行映射时,如果我访问对象的某些属性,则字段不会成功显示。采取以下代码,它可以正常工作:
formfields.map(function (formfield, i) {
var returnfield = <div key={i}>{formfield.name}</div>;
switch (formfield.type) {
case "TextBox":
console.log(formfield.label);
returnfield = (
<div key={i}>
<label htmlFor="theinput">{formfield.name}</label>
<input id="theinput" type="text" value={formfield.name} />
</div>
);
break;
}
return returnfield;
});
并将其与失败的代码进行比较:
formfields.map(function (formfield, i) {
var returnfield = <div key={i}>{formfield.name}</div>;
switch (formfield.type) {
case "TextBox":
console.log(formfield.label.text);
returnfield = (
<div key={i}>
<label htmlFor="theinput">{formfield.name}</label>
<input id="theinput" type="text" value={formfield.name} />
</div>
);
break;
}
return returnfield;
});
精明的观察者会注意到两者之间的唯一区别是,在第二个中,我们记录的是formfield.label.text而不是 formfield.label
我完全不明白为什么简单地记录一个对象的孙子属性会导致表单显示为空(即,没有字段)。也许我遇到了保留名称或其他什么?任何想法表示赞赏。