支持回调没有返回?

时间:2016-06-22 03:17:07

标签: javascript reactjs material-ui

我正在使用带有ReactJS的Material UI Table,并且无论何时选择/取消选择行,都希望更改状态变量。 Table onRowSelection每次选择一行时都会触发{<1}}:

<Table
  height='300px'
  fixedHeader={true}
  multiSelectable={true}
  showRowHover={true}
  onRowSelection={this.handleRowSelection.bind(this)}
>

我将以下函数传递给onRowSelection道具:

handleRowSelection(selectedRows) {
  let contactsImport = [];

  if (selectedRows === 'all') {
    contactsImport = this.state.contacts.new;
  } else if (selectedRows !== 'none') {
    selectedRows.forEach((index) => {
      contactsImport.push(this.state.contacts.new[index]);
    });
  }

  this.setState({
    contactsImport:contactsImport
  });
}

这会正确设置状态,但会阻止表行选择正常运行。如果我单击一行,则复选框不会检查 - 它似乎正在检查,然后立即取消选中,因为我得到了'涟漪'动画但没有勾选标记。

删除对setState的调用可以解决问题,因此setState是否可能阻止回调正确返回?或者这可能是Material UI的错误?

1 个答案:

答案 0 :(得分:2)

如果您希望以编程方式控制该行,则必须从该州管理单行组件的selected属性。默认情况下,selected属性为false,因此当setState重新发布时,它会重置为false