reactjs - 将复选框列表值从子级传递给父级
问题描述
我正在创建带有复选框的搜索表单并调用 api URL。我需要建议如何将选定的复选框值从子组件传递回父组件并更新选定的值字符串状态。谢谢。
//CheckboxTest.js
import React,{Component} from 'react';
const data=[
{checked:false, value:'location A'},
{checked:false, value:'location B'}
];
class CheckboxTest extends Component{
state={items:[]};
onCheckChange=(idx)=>{
const items = this.state.items.concat();
items[idx].checked = !items[idx].checked;
this.setState({items});
this.props.onChange(this.state.items);
};
render(){
return (
<div>{data.map(item=>(<div>
<input type="checkbox" checked={item.checked} onChange= {item.onCheckChange} />
{ item.value }
</div>))}</div>
);
}
}
export default CheckboxTest;
//App.js
import CheckboxTest from './CheckboxTest';
class App extends Component {
state={
items:[],
itemchecked
};
componentDidMount(){
//call api
this.runSearch({items});
}
//handle checkbox changes
handleChange(id) {
//how to set items state here ???
this.runSearch(id);
}
render(){
return (
<div className="App">
<form>
<CheckboxTest onChange={this.handleChange} checked={this.itemchecked} />
</form>
</div>
);
}
}
export default App;
解决方案
在 React 中有一种单向数据流。所有数据都从父母流向孩子。因此,父母必须拥有该功能(就像您使用handleChange-function所做的那样),而孩子必须运行该功能。这最后一部分你还没有完成。
您需要使用孩子的道具来访问您从父母传下来的功能。在这里阅读更多:
推荐阅读
- c++ - 复合模式中的异常安全
- linux - 如何根据需要将所有文件合并为一个文件
- c# - 如何使用 Linq 在某些操作中聚合两个 List?
- r - 在 Window 10 上安装 nloptr 版本 1.2.1:错误 #include "nlopt.h"
- vb.net - 遍历富文本框中的每个单词
- ios - 表单/表格中的 SwiftUI 多个 NavigationLink - 条目保持突出显示
- python - 如何使用 PostgreSQL 和 %sql 魔术在 Jupiter 中选择带有空格的列名?
- java - 如何更改椭圆的行和列的颜色以响应鼠标悬停在其中一个椭圆上?
- php - android live设备上的离子和电容器的CORS问题
- swift - 我想将字符串值从 API 转换为自定义可编码模型 SWIFT