我正在使用材料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-*宽度。