Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 材料界面+;反应:为什么';t<;表/>';“全部选择”的在行选择工作?_Javascript_Arrays_Reactjs_React Jsx_Material Ui - Fatal编程技术网

Javascript 材料界面+;反应:为什么';t<;表/>';“全部选择”的在行选择工作?

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()

我将Material UI的
()与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
方法