【发布时间】:2020-06-14 12:25:46
【问题描述】:
我正在尝试根据用户输入创建对象。我一直关注到现在。
它给了我以下错误:
未捕获的类型错误:无法读取未定义的属性“全名”
const App = () => {
let passengerObj = {
"primary": {
"fullname": "",
"age": null,
},
"secondary": [],
}
const [passengerdata, setPassengerData] = useState(passengerObj)
return (
<form className="passenger-form">
<input
type="text"
placeholder="Full Name"
value={passengerdata.primary.fullname}
onChange={setPassengerData}
required/>
<input
type="number"
placeholder="Age"
value={passengerdata.primary.age || ""}
onChange={setPassengerData}
required/>
<div className="secondary-passenger-data">
<input
type="text"
placeholder="Full Name of Passenger2"
required/>
<input type="number"
placeholder="Age Passenger2"
required/>
</div>
<div className="secondary-passenger-data">
<input
type="text"
placeholder="Full Name of Passenger3"
required/>
<input type="number"
placeholder="Age Passenger3"
required/>
</div>
</form>
)}
当我尝试在passengerObj 中添加主要和次要数据时。所以,我可以保存它。但是,它想让我这样做。
不确定如何使用钩子将主要和辅助数据添加到对象。
这里的沙箱我复制它。
https://codesandbox.io/s/distracted-sunset-89ecj?file=/src/App.js:0-1184
任何将不胜感激。
【问题讨论】:
-
在直接从 onChange 调用 setPassengerData 时,您期望什么?我建议进行基本调试 - console.log(passengerData)。
-
@jonrsharpe 我用粗体突出了我的期望。
-
但你并没有试图这样做。您将使用 onChange 的默认参数替换整个状态。再一次,做一些基本的调试,你很快就会明白为什么passengerData.primary 变得未定义。这与 React 或 hooks 并没有真正的关系,同样的事情也会发生在带有常规赋值的 vanilla JS 中。
标签: javascript reactjs react-hooks