React Hooks 在 Table 中修改数组

React Hooks Modify Array In Table

在将 table 渲染为 table 后,我在使用 useState 修改数组中的值时遇到问题。这是一个简单的例子:

  //The hook
  const [awayAbilityAdjust, setAwayAbilityAdjust] = useState([1, 1, 1, 1, 1]);

现在,我将其渲染为 Bootstrap 中的 table 和 Form:

                            <tr>
                              <td>Ability Adjust</td>
                              {awayAbilityAdjust.map((ability, index) => (
                                <td key={index}>                               
                                  <Form.Control
                                    size="sm"
                                    type="number"
                                    name="ability-input"
                                    step="0.1"
                                    value={ability}
                                    style={{
                                      width: "50px",
                                      backgroundColor: "#6d784b",
                                      color: "#ffff",
                                    }}
                                    min="0"
                                    max="10"
                                    onChange={updateHomeAbility(index)
                                    }
                                  />
                                  </td>
                              ))}
                            </tr>

这里是updateHomeAbility:


  const updateHomeAbility = (index) => (e) => {
    const updatedArray = [...homeAbilityAdjust];
    homeAbilityAdjust[index] = e.target.value;
    setHomeAbilityAdjust(updatedArray);
  };

然而,当我 select Form 上的向上和向下按钮时,这不会更改任何值。如何使用 useState?

修改这些值

您正在将 homeAbilityAdjust 复制到 updatedArray 后进行更新。您只需要更新 updatedArray 即可。

const updateHomeAbility = (index) => (e) => {
  const updatedArray = [...homeAbilityAdjust];
  updatedArray[index] = e.target.value;
  setHomeAbilityAdjust(updatedArray);
};