当前位置: 首页 > 面试题库 >

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

彭阳朔
2023-03-14
问题内容

我正在使用材料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之类的替代方法



 类似资料:
  • 问题内容: 我正在一个涉及使用PHP脚本自动填充选择框的网站上工作。除了问题是我用来填充文本框的标题非常长(它们是期刊文章和演示文稿标题)外,所有其他方法都工作正常。下拉框延伸到最长元素的宽度,该元素延伸超出屏幕边缘,因此使滚动条无法触及。我尝试了多种尝试使用CSS手动将下拉框设置为特定宽度的方法,但到目前为止都无济于事。我所能做到的最好的事情是将“选择”框设置为一定的宽度,但是下拉菜单本身要宽得

  • 问题内容: 我正在一个涉及使用PHP脚本自动填充选择框的网站上工作。一切都很好,除了问题是我用来填充文本框的标题非常长(它们是期刊文章和演示文稿标题)。下拉框延伸到最长元素的宽度,该元素延伸超出屏幕边缘,因此使滚动条无法触及。我尝试了多种尝试使用CSS手动将下拉框设置为特定宽度的方法,但到目前为止都无济于事。我最好地完成了将“选择”框设置为特定宽度的操作,但是下拉菜单本身的宽度要大得多。 任何对此

  • 问题内容: 我正在使用react,我想获得react下拉列表中所选选项的值,但我不知道如何。有什么建议?谢谢!我的下拉列表只是一个类似的选择: 问题答案: 方法中的代码表示任何给定时间的组件。如果您执行以下操作,则用户将无法使用表单控件进行选择: 因此,有两种使用表单控件的解决方案: 受控组件 使用组件可以反映用户的选择。这提供了最大的控制权,因为您所做的任何更改都将反映在组件的呈现中: 例: J

  • 问题内容: 我添加了一个带有禁用属性的额外选项,但这给了我以下警告: 在选择上使用或道具,而不是在选项上设置 。 是传递给要映射到具有的每个索引的索引,并且我也传递了数组中的键。一切都在这里工作,只是向我展示了我上面提到的警告。 我该如何删除它或如何设置一个完美的占位符以使react下降? 问题答案: 原因是,通过提供了一种更好的方法来控制元素,因此,与其使用with选项,不使用选项的value属

  • 问题内容: 如何在引导程序3.0中将下拉触发按钮的宽度设置为等于下拉列表的宽度?与使用bootstrap-select所实现的功能类似。我试图用col- *类将整个列表包装在div中,但这似乎不起作用: 因此,我想:按钮宽度=下拉菜单列表= col- *宽度。 问题答案: 我通过设置下拉菜单和按钮宽度= 100%找到了解决方案。 现在,按钮和下拉列表的宽度相同,由列宽度控制。

  • 如何将bootstrap 3.0中下拉触发按钮的宽度设置为等于下拉列表的宽度?与使用引导选择时实现的功能类似(http://silviomoreto.github.io/bootstrap-select/).我试图用col-*类将整个列表包装在一个div中,但这似乎不起作用: 因此,我想:按钮宽度=下拉框列表=col-*宽度。