【发布时间】:2021-11-07 14:48:48
【问题描述】:
我不确定是否可以这样做,在我的 React 应用程序中,我有一个 <form> 并带有以下输入字段:
<TextField />
<TextField />
<TextField />
我有一个状态
const [info, setInfo] = useState({
firstName:"",
lastName:"",
colors:[]
})
我知道如何使用像 setInfo(...info, firstName:e.target.value) 这样的 ES6 Spread 设置单个字段,但这似乎不适用于 Object 中的数组。
目前,如果我想设置颜色,我去:
<TextField onChange={addColor1}/>
<TextField onChange={addColor2}/>
<TextField onChange={addColor3}/>
然后我创建一个array colors = [color1, color2, color 3],最后我`setInfo({...info, colors:colors})
但我想知道是否有一种方法可以设置颜色数组,而无需编写重复的函数,如 addColor1、addColor2 ...
谢谢!
【问题讨论】:
-
您是否有任何具体原因要这样做?我只是好奇...要回答您的问题,您可以使用“推”
-
实际上推送到状态数组会改变它。您可以像当前散布对象一样散布数组。
setInfo({...info, colors:[...info.colors, colorToAdd]}) -
@NoxinDVictus 说,在未来,应用越来越大,人们想要添加更多自己喜欢的颜色,那么应该有一个按钮来添加更多输入字段并允许人们输入更多颜色,我的代码中的解决方案从来都不是我认为的理想方式
标签: reactjs material-ui frontend