use*_*896 0 javascript forms reactjs
我列出了学生的姓名和他们的ID。每当呈现列表元素时,Parent类都会调用Child类。
export default class Parent extends Component {
render() {
return (
<div>
<div>
<ul>{this.props.studentData.map(item => {
return(
<div><Child key={item.id} {...item} /></div>);
})}
</ul>
<button>Submit</button>
</div>
</div>
);
}
}
export default class Child extends Component {
render() {
let {name}=this.props;
return (
<li><input type="checkbox"/>{name}</li>
);
}
}
Run Code Online (Sandbox Code Playgroud)
我试图在列表下方放置一个提交按钮,该按钮返回一个或多个已检查学生姓名的结果。我不明白的是,如何将学生名称的值从“子级”组件返回到“父级”,然后一直返回到层次结构的顶部并存储在某种变量中。有没有办法将值返回给父组件,即进行调用的组件?
您可以发送一个回调函数,Child该函数在被选中或取消选中时会通知该函数。
const Child = ({ id, name, onChange }) =>
<li>
<input
type="checkbox"
onChange={(event) => onChange(id, event.target.checked) }
/>
{name}
</li>
class Parent extends React.Component {
constructor() {
super()
this.handleChange = this.handleChange.bind(this)
}
handleChange(id, checked) {
console.log(`student ${id} is ${checked ? 'checked' : 'unchecked'}`)
}
render() {
return (
<div>
<ul>
{this.props.studentData.map(item =>
<Child key={item.id} {...item} onChange={this.handleChange} />
)}
</ul>
</div>
)
}
}
const studentData = [
{ id: 1, name: 'Student 1' },
{ id: 2, name: 'Student 2' },
{ id: 3, name: 'Student 3' },
]
ReactDOM.render(
<Parent studentData={studentData} />,
document.getElementById('root')
)Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1083 次 |
| 最近记录: |