状态改变时如何更新数组中的键值?

How to update key value inside array when state changes?

我正在使用 React.js 并且在渲染方法中我有 <Range/> 组件。我想要做的是能够更改值并相应地更新状态数组。这就是我所说的:

...
{
    this.state.tableData.map((i, k) => {
        return (
            <>
                <tr key={k}>
                    <td>
                        <div>
                            <Range
                                values={[i.s_rate]}
                                min={MIN}
                                max={MAX}
                                onChange={(values) => this.onSliderChangeS(values, k)}
    ...

所以我触发了 onSliderChangeS 函数,它将 s_rate 的新值作为来自用户的 values,它必须更新并显示我的新 this.state.tableData 因此。我正在尝试这样做:

onSliderChangeS = (values, key) => {
    this.setState({
        valuesS: values,
        tableData[key].s_rate: parseInt(values)
    })
}

但这行this.state.tableData[key].s_rate: parseInt(values)似乎根本不起作用。我该怎么做?

setState 采用具有 key/value 个条目的对象。 this.state.tableData[key].s_rate 本身不是您所在州的关键名称。看看这是否有帮助:

onSliderChangeS = (values, key) => {
    const newTableData = [...this.state.tableData]
    newTableData[key].s_rate = parseInt(values)

    this.setState({
        valuesS: values,
        tableData: newTableData
    })
}

另请注意@FaFa

指出的缺失逗号