对 img 单选按钮的反应使用形式
React use form for img radio buttons
我正在尝试在 React 中创建剪刀石头布游戏。我会假设为此使用一个表单是有意义的,我至少会使用一个表单,而不是用于反应。
我认为最简单的方法是三个无线电输入和一个提交。
但是,由于我想使用三张图片作为实际的单选按钮。使用表单是否有意义,因为 React 旨在将状态从表单中移除。这是我的代码中的一点,我意识到我可能走错了路。
onChangeHandler = (event) => {
this.setState({ [event.target.name]: event.target.value });
}
render() {
return (
<div>
<div>
<form>
<input type="radio" value="Rock" name="gender" onChange={this.onChangeHandler} /> Rock
<input type="radio" value="Paper" name="gender" onChange={this.onChangeHandler} /> Paper
<input type="radio" value="Scissor" name="gender" onChange={this.onChangeHandler} /> Scissor
<input type="submit" value="Submit" onClick = () => {submit()}/>
</form>
</div>
<div>
<img id="r" value="rock" src="http://www.jerrylow.com/demo/rps/rock.svg" alt="a rock" />
<img id="p" value="paper" src="http://www.jerrylow.com/demo/rps/paper.svg" alt="a piece of paper" />
<img id="s" value="scissor" src="http://www.jerrylow.com/demo/rps/scissor.svg" alt="a scissor" />
</div>)
}
我是否应该使用此表格,即使该表格没有特定用途。如果是,我应该如何将它与 img 元素集成?
您有几种解决方法。您可以完全放弃表单并将 onClick
侦听器附加到每个图像,这些图像会在单击时修改状态,然后有一个按钮,在单击时会调用您的提交功能。
或者,如果您希望保留表单,您可以将单选按钮和图像包裹在标签中,隐藏单选按钮,以便在单击图像时触发 onChange
。或者,您可以在标签上指定一个 for
prop 来匹配单选按钮的 id 并在其中包含图像,它的行为将如前所述,类似于
<input type="radio" id="myButton" onChange={handleChange} />
<label for="myButton"><img src="img.png" /></label>
我想这真的取决于您想要的解决方案,因为任何一种方式都可以。我个人宁愿不在这种情况下使用表单,纯粹是因为它不是必需的,而且代码会更小。
我正在尝试在 React 中创建剪刀石头布游戏。我会假设为此使用一个表单是有意义的,我至少会使用一个表单,而不是用于反应。
我认为最简单的方法是三个无线电输入和一个提交。
但是,由于我想使用三张图片作为实际的单选按钮。使用表单是否有意义,因为 React 旨在将状态从表单中移除。这是我的代码中的一点,我意识到我可能走错了路。
onChangeHandler = (event) => {
this.setState({ [event.target.name]: event.target.value });
}
render() {
return (
<div>
<div>
<form>
<input type="radio" value="Rock" name="gender" onChange={this.onChangeHandler} /> Rock
<input type="radio" value="Paper" name="gender" onChange={this.onChangeHandler} /> Paper
<input type="radio" value="Scissor" name="gender" onChange={this.onChangeHandler} /> Scissor
<input type="submit" value="Submit" onClick = () => {submit()}/>
</form>
</div>
<div>
<img id="r" value="rock" src="http://www.jerrylow.com/demo/rps/rock.svg" alt="a rock" />
<img id="p" value="paper" src="http://www.jerrylow.com/demo/rps/paper.svg" alt="a piece of paper" />
<img id="s" value="scissor" src="http://www.jerrylow.com/demo/rps/scissor.svg" alt="a scissor" />
</div>)
}
我是否应该使用此表格,即使该表格没有特定用途。如果是,我应该如何将它与 img 元素集成?
您有几种解决方法。您可以完全放弃表单并将 onClick
侦听器附加到每个图像,这些图像会在单击时修改状态,然后有一个按钮,在单击时会调用您的提交功能。
或者,如果您希望保留表单,您可以将单选按钮和图像包裹在标签中,隐藏单选按钮,以便在单击图像时触发 onChange
。或者,您可以在标签上指定一个 for
prop 来匹配单选按钮的 id 并在其中包含图像,它的行为将如前所述,类似于
<input type="radio" id="myButton" onChange={handleChange} />
<label for="myButton"><img src="img.png" /></label>
我想这真的取决于您想要的解决方案,因为任何一种方式都可以。我个人宁愿不在这种情况下使用表单,纯粹是因为它不是必需的,而且代码会更小。