ReactJS-在表格中设置行下拉菜单

我正在使用材料ui表。列之一具有SelectField组件,这是一个下拉菜单,其中没有几个项目可供选择。示例代码在这里:

<TableBody

displayRowCheckbox={this.state.showCheckboxes}

deselectOnClickaway={this.state.deselectOnClickaway}

showRowHover={this.state.showRowHover}

stripedRows={this.state.stripedRows}

>

{tableData.map( (row, index) => (

<TableRow key={index} selected={row.selected}>

<TableRowColumn>{index}</TableRowColumn>

<TableRowColumn>

<SelectField key={index} value={row.clientId} onChange={this.handleRowChange}>

{clientsDropdownData.map((row, index) =>(

<MenuItem key={row.val} value={row.val} primaryText={row.name} />

))}

</SelectField>

</TableRowColumn>

<TableRowColumn>{row.name}</TableRowColumn>

<TableRowColumn>{row.status}</TableRowColumn>

</TableRow>

))}

</TableBody>

根据提供给表的数据中的clientId值,正确设置所有行的下拉菜单的初始值。在更改所选行的下拉菜单时,我想更改提供的数据的clientId属性。我该如何实现?React是关于状态的。但是,如何管理多个动态状态?

这就是SelectField onChange的内容:

handleRowChange = (event, index, rowValue) => {

//this.setState({rowValue}); how to set state here?

tableData[index]['clientId'] = rowValue; //this doesn't work. But this is what I want. I want to update tableData and also update the UI.

}

回答:

您可以tableData在状态中使用属性。当您想要更新它(表数据和表视图)时,您可以使用以下方式 :

handleRowChange = (event, index, rowValue) => {

let newTableData = this.state.tableData

newTableData[index]['clientId'] = rowValue;

this.setState({tableData: newTableData}); //New table set and view updated

}

并直接使用您的州的表替换:

{tableData.map( (row, index) => (

{this.state.tableData.map( (row, index) => (

这就是为什么React的状态实际上是usfeul。您可以在其中放置任何内容,更新时,将相应地重新渲染视图。如果您的状态变得更加复杂,则可以使用Redux之类的替代方法

以上是 ReactJS-在表格中设置行下拉菜单 的全部内容, 来源链接: utcz.com/qa/428803.html

回到顶部