Javascript 材料界面+;反应:为什么';t<;表/>';“全部选择”的在行选择工作?
我将Material UI的Javascript 材料界面+;反应:为什么';t<;表/>';“全部选择”的在行选择工作?,javascript,arrays,reactjs,react-jsx,material-ui,Javascript,Arrays,Reactjs,React Jsx,Material Ui,我将Material UI的()与ReactJS一起使用,设置了一个带有全选复选框的表格。每次单独单击某行的复选框时,该行id都会添加到状态数组clickedRowIds。所以console.log(),打印出一个数组,其中包含单击行的ID 例如,如果我只勾选第一行和第二行的复选框,控制台日志将打印:\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu[1,2](1和2表示整数中的行ID号)。但是,当我单击标题中的全选复选框时,它会勾选表中的所有复选框,但在控制台.log()
()与ReactJS一起使用,设置了一个带有全选复选框的表格。每次单独单击某行的复选框时,该行id都会添加到状态数组clickedRowIds
。所以console.log()
,打印出一个数组,其中包含单击行的ID
例如,如果我只勾选第一行和第二行的复选框,控制台日志将打印:\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu[1,2]
(1和2表示整数中的行ID号)。但是,当我单击标题中的全选复选框时,它会勾选表中的所有复选框,但在控制台.log()
,它只会显示\uuuuuuu这些是已单击的行。所有和ID。forEach()
会收到一个错误未捕获的类型错误:ids.forEach不是一个函数
行复选框都是通过全选复选框单击的,但是为什么不将所有行ID号添加到clickedRowIds
数组中呢?使用ids.forEach()
,我想使用“全选”按钮控制台记录所有选定的行
export default class TestTable extends Component {
constructor(props) {
super(props)
this.state = {
clickedRowIds: [],
}
this.handleRowSelection = this.handleRowSelection.bind(this);
}
handleRowSelection(rowIds) {
this.setState({
clickedRowIds: rowIds
})
}
render(){
const ids = this.state.clickedRowIds
console.log('____THESE ARE THE CLICKED ROWS____ ', ids)
ids.forEach(id => {console.log(id)})
return(
<div className='table_body' style={styles.content}>
<Table
multiSelectable={true}
onRowSelection={this.handleRowSelection}
>
<TableHeader
displaySelectAll={true}
enableSelectAll={true}
>
...
</TableHeader>
</Table>
</div>
)
}
}
导出默认类TestTable扩展组件{
建造师(道具){
超级(道具)
此.state={
clickedRowIds:[],
}
this.handleRowSelection=this.handleRowSelection.bind(this);
}
handleRowSelection(rowIds){
这是我的国家({
clickedRowIds:rowIds
})
}
render(){
const id=this.state.clickedRowIds
console.log(“这些是单击的行,ID”)
forEach(id=>{console.log(id)})
返回(
...
)
}
}
答案将被投票表决并回答。检查此处的文档:
选择行时调用。selectedRows是所有行的数组
选择。如果选择了所有行,则将显示字符串“all”
而是返回以指示已选择所有行
这意味着,如果选择了所有行,令人烦恼的是,您的rowid将不再设置为数组,而是一个表示“all”的字符串。在对rowIds调用forEach之前,需要一些逻辑来处理这种情况。您的错误是由于字符串“all”没有可用的forEach
方法