我在useState中有一个默认值数组。通过选择发生onChange事件时,数组中的属性将更改为未定义。我一直在阅读受控组件,我想我错过了一些愚蠢的东西。
这是一个代码沙盒。
const [config, setConfig] = useState([{
carType: "Sedan",
carColor: "Red"
}]);
// onChange
const setCarType = (e) => {
setConfig({ ...config[0], carType: e.target.value });
};
const { carType, carColor } = config[0];
我想我可以在这里使用spread运算符,以便将config[0]的两个属性复制到两个单独的常量中。我最初在一个对象中有配置,但被抛出了一个错误";对象作为react子对象是无效的";。
const setCarType = (e) => {
setConfig([{ ...config[0], carType: e.target.value }]);
};
const setCarColor = (e) => {
setConfig([{ ...config[0], carColor: e.target.value }]);
};
当您设置config时,您将一个新对象设置为config,但它被初始化为对象数组。所以config[0]是未定义的,因为config不再是一个数组。试试上面的代码,它会解决问题。