【发布时间】:2020-11-23 07:49:33
【问题描述】:
我有一个 json,其中包含父母姓名和父母拥有的孩子。
我有一个代码可以获取 json 的父母和孩子的名字。根据孩子的数量,创建输入框,以便您输入每个孩子的名字。但我被困住了。当我单击按钮时,我将如何打印一条以父名称开头的消息,并将每个输入框中的值与 json 的值和允许我命名孩子的框组合起来
例如,当我从下拉列表中单击“jim”时,会出现 2 个输入框,上面写着“child1”和“child2”,并且在它们旁边显示两个框,因为他有两个孩子。如果我将 child1 命名为“james”,将 child2 命名为“mary”并按下按钮,我如何在最后的输入框中打印一条消息
“吉姆——child1=james——child2=mary”
import React from 'react';
class AppEX extends React.Component {
constructor() {
super();
this.state = {
kids: null,
parentname: null,
parent: [
{ name: 'will', kids: ['child1', 'child2'] },
{ name: 'kia', kids: ['child1'] },
{ name: 'jim', kids: ['child1', 'child2'] }
]
};
}
handleParentChoice = e => {
e.persist();
this.setState({
parentname: e.target.value
});
};
render() {
const namelist = [];
this.state.parent.forEach(e => {
namelist.push({ value: e.name, label: e.name });
});
return (
<div>
<select name="select" onChange={this.handleParentChoice}>
{namelist.map(n => (
<option key={n.value} value={n.value}>
{n.label}
</option>
))}
</select>
<br />
{this.state.parentname &&
this.state.parent
.find(p => p.name === this.state.parentname)
.kids.map(k => (
<div>
<input
key={k}
type="text"
value={k}
disabled={true}
/>
<input key={k} type="text" />
</div>
))}
<br />
<button type="button" value="render" onClick={this.print} />
<input type="text" disabled={true} />
</div>
);
}
}
export default AppEX;
【问题讨论】: