[英]How to set default value in checkbox and radio button?
I am making a simple react application where I have some default values to set to the input fields.我正在制作一个简单的反应应用程序,其中我有一些默认值设置为输入字段。
Here there are three input fields,这里有三个输入字段,
-> Textbox = UserName
-> Checkbox = Relocation
-> Radio = ContactMode
Their respective values are,它们各自的值是,
{
UserName: "Test User",
Relocation: true,
ContactMode: "Email",
}
Working Snippet:工作片段:
const { useState } = React; const App = () => { const [formValue, setFormValue] = useState({ UserName: "Test User", Relocation: true, ContactMode: "Email", }); const handleInputChange = (e) => { const { name, value } = event.target; setFormValue({ ...formValue, [name]: value, }); }; const submitData = () => { console.log(formValue) } return ( <div> <form> <label> User Name </label> <input type="text" name="UserName" value={formValue.UserName} onChange={handleInputChange} /> <br /> <br /> <label> Willing to relocate? </label> <input type="checkbox" name="Relocation" value={formValue.Relocation} onChange={handleInputChange} /> <br /> <br /> <label> Contact Mode </label> <input type="radio" name="ContactMode" value={`Email`} onChange={handleInputChange} />{" "} Email <input type="radio" name="ContactMode" value={`Text`} onChange={handleInputChange} />{" "} Text <input type="radio" name="ContactMode" value={`Both`} onChange={handleInputChange} />{" "} Both <br /> <br /> <button type="button" onClick={submitData}> Submit </button> </form> </div> ); }; ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.11.0/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.11.0/umd/react-dom.production.min.js"></script> <div id="root"></div>
Problem:问题:
-> In the above eg.., Only the text field value is got set but checkbox and radio button values not got set by default. -> 在上面的例子中,只有文本字段的值被设置,但复选框和单选按钮的值默认没有设置。
Expectaion:期望:
-> All the three input fields needs to get set by its default values. -> 所有三个输入字段都需要设置为默认值。
-> On changing any input field and upon clicking submit button, the latest changes needs to get logged via formValue
.. -> 在更改任何输入字段并单击提交按钮时,需要通过
formValue
记录最新的更改。
You need to use checked你需要使用检查
const { useState } = React; const App = () => { const [formValue, setFormValue] = useState({ UserName: "Test User", Relocation: true, ContactMode: "Email", }); const handleInputChange = (e) => { const { name, value } = event.target; setFormValue({ ...formValue, [name]: value, }); }; const handleCheckedChange = (e) => { const { name, checked } = event.target; setFormValue({ ...formValue, [name]: checked, }); } const submitData = () => { console.log(formValue) } return ( <div> <form> <label> User Name </label> <input type="text" name="UserName" value={formValue.UserName} onChange={handleInputChange} /> <br /> <br /> <label> Willing to relocate? </label> <input type="checkbox" name="Relocation" checked={formValue.Relocation} onChange={handleCheckedChange} /> <br /> <br /> <label> Contact Mode </label> <input type="radio" name="ContactMode" checked={formValue.ContactMode === "Email"} value={`Email`} onChange={handleInputChange} />{" "} Email <input type="radio" name="ContactMode" checked={formValue.ContactMode === "Text"} value={`Text`} onChange={handleInputChange} />{" "} Text <input type="radio" name="ContactMode" checked={formValue.ContactMode === "Both"} value={`Both`} onChange={handleInputChange} />{" "} Both <br /> <br /> <button type="button" onClick={submitData}> Submit </button> </form> </div> ); }; ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.11.0/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.11.0/umd/react-dom.production.min.js"></script> <div id="root"></div>
The equivalent value
property for a checkbox is checked
:复选框的等效
value
属性被checked
:
<input
type="checkbox"
name="Relocation"
checked={formValue.Relocation}
onChange={handleInputChange}
/>
const { useState } = React;
const App = () => {
const [formValue, setFormValue] = useState({
UserName: "Test User",
Relocation: true,
ContactMode: "Email",
});
const handleInputChange = (e) => {
const { name, value } = event.target;
setFormValue({
...formValue,
[name]: value,
});
};
const submitData = () => {
console.log(formValue)
}
return (
<div>
<form>
<label> User Name </label>
<input
type="text"
name="UserName"
value={formValue.UserName}
onChange={handleInputChange}
/>
<br />
<br />
<label> Willing to relocate? </label>
<input
type="checkbox"
name="Relocation"
value={formValue.Relocation}
onChange={handleInputChange}
/>
<br />
<br />
<label> Contact Mode </label>
<input
type="radio"
name="ContactMode"
value={`Email`}
onChange={handleInputChange}
checked={formValue.ContactMode==="Email"}
/>{" "}
Email
<input
type="radio"
name="ContactMode"
value={`Text`}
onChange={handleInputChange}
checked={formValue.ContactMode==="Text"}
/>{" "}
Text
<input
type="radio"
name="ContactMode"
value={`Both`}
onChange={handleInputChange}
checked={formValue.ContactMode==="Both"}
/>{" "}
Both
<br />
<br />
<button type="button" onClick={submitData}> Submit </button>
</form>
</div>
);
};
ReactDOM.render(<App />, document.getElementById("root"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.