【发布时间】:2020-04-20 09:45:17
【问题描述】:
我有一个用 React 编写的 web 应用程序。我有一个映射(!)组件,它代表一个状态数组。这是映射的子组件:
<div className="summarized_content_div">
<ul>
<li>Benutzername: <input id='inputBenutzername' type="text" defaultValue={this.props.benutzername}/></li>
<li>Vorname: <input id='input_vorname' type="text" defaultValue={this.props.vorname}/></li>
<li>Nachname: <input id='input_nachname' type="text" defaultValue={this.props.nachname}/></li>
<li>E-Mail: <input id='input_email' type="text" defaultValue={this.props.email}/></li>
<li>Letzter Login: <input id='input_letzter_login' type="text" defaultValue={this.props.letzter_login}/></li>
<li>Status: <input id='input_status' type="text" defaultValue={this.props.status}/></li>
<input id="speichern" className="button" type="button" value="Speichern"/><input id="löschen" className="button" type="button" value="Löschen"/>
</ul>
</div>
现在我希望在单击按钮时将输入字段(input_benutzername、input_vorname...)的值传递给父组件。我可以这样做:
const value = document.getElementById('whatever').value
然后用那个值做一些事情。
...但正如我所说,那些组件是映射的,所以它总是传递第一个映射组件的值,因为它搜索具有此 id 的第一个元素(我猜)。
所以我的最后一个问题是,如何在不使用 getElementById 的情况下获取输入字段的值,因为这不起作用。
谢谢你的帮助
编辑:
这是父组件:
doSomethingWithTheValues = (values) => {
...
}
...
<Route path="/verwaltung/benutzer">
<div>
{this.props.benutzer.map((benutzer, index) => {
return <BenutzerItem
index={index}
key={benutzer.id}
id={benutzer.id}
benutzername={benutzer.benutzername}
vorname={benutzer.vorname}
nachname={benutzer.nachname}
email={benutzer.email}
letzter_login={benutzer.letzter_login}
status={benutzer.status}
/>
})}
</div>
</Route>
【问题讨论】:
-
您的意思是在您的应用/组件中有多个具有相同 ID 的元素吗?
-
是的,也许我也应该改变它:)
-
这是在 React.js 中吗
-
你应该先解决这个问题。一个 ID 只能使用一次 :)
-
是的,这就是问题所在。 ID 应该在 DOM 中是唯一的,在您的情况下,您应该使用类,并在按钮单击时使用 DOM 遍历查找相应的元素。请使用codesandbox.io为此创建small demo。这可能有助于其他人调试并提供对此的更多见解
标签: javascript reactjs input parameters