javascript - 在 React 中设置单选按钮值
问题描述
我正在制作一个带有单选按钮的简单反应应用程序。
这里有一个可用的默认数据,例如,
const defaultData = [{ ContactMode: 3 }, { ContactMode: 2 }, { ContactMode: 2 }];
要求:
-> 需要对其进行迭代并在每一行中defaultData
指定它们各自的模式。ContactMode
工作片段:
const { useState } = React;
const App = () => {
const [formValue, setFormValue] = useState({
ContactMode: 1
});
const defaultData = [{ ContactMode: 3 }, { ContactMode: 2 }, { ContactMode: 2 }];
const handleInputChange = (e, index) => {
const { name, value } = event.target;
setFormValue({
...formValue,
[name]: value
});
};
const submitData = () => {
console.log(formValue);
};
return (
<div>
<form>
{defaultData.map((item, index) => {
return (<React.Fragment>
<label> Contact Mode </label>
<input
type="radio"
name="ContactMode"
checked={item.ContactMode == 1}
value={1}
onChange={(event) => handleInputChange(index, event)}
/>{" "}
Email
<input
type="radio"
name="ContactMode"
checked={item.ContactMode == 2}
value={2}
onChange={(event) => handleInputChange(index, event)}
/>{" "}
Text
<input
type="radio"
name="ContactMode"
checked={item.ContactMode == 3}
value={3}
onChange={(event) => handleInputChange(index, event)}
/>{" "}
Both
<br />
<br />
<button type="button">
Save
</button>
<br />
<br />
<br />
</React.Fragment>);
})}
</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>
预期输出:
Contact Mode Email Text Both (Checked)
Contact Mode Email Text(Checked) Both
Contact Mode Email Text(Checked) Both
注意:我无法修改名称属性name="ContactMode"
..原因是我每行也有单独的保存按钮,单击该保存按钮时,特定行将被保存..每一行都应该有name="ContactMode"
..
编辑:
由于我的问题不清楚我想要实现的目标,因此我将在此处提供整个代码。
->我有一个步进表格,其中第 2 步是就业部分,默认情况下我有要设置到表格中的值,
const dynamicData = [
{
EmploymentID: 1,
companyName: 'Company One',
designation: 'Designation One',
ContactMode: 3,
},
{
EmploymentID: 2,
companyName: 'Company two',
designation: 'Designation One',
ContactMode: 2,
},
];
->在useEffect
钩子里面我设置了表单值,
React.useEffect(() => {
setExpanded(0);
setValue((prev) => {
const companyDetails = [...dynamicData];
return { ...prev, companyDetails };
});
}, []);
此处带有输入框的表单值已正确绑定,但未检查单选按钮值。
->有两个数据可用,但默认情况下第一个将展开,而第二个将在单击Expand
第一个下方的按钮时打开。
->单击save
按钮后,该特定对象 ( inputField
) 将与修改后的数据一起记录在控制台中(仅用于测试)。
这里的问题是,如果我们修改数据,那么一切正常,但单单无线电检查属性没有使项目检查..(检查指示不起作用)..
请转到下面给出的代码框中的第 2 步以查看问题。要查看第二项,请单击展开按钮。
请帮助我在每一行中设置默认单选按钮值。
解决方案
我认为这是因为所有收音机都具有相同的名称属性,每个组都应该有不同的名称。例如:
name = " ex1"
name = "ex2"
name = "ex3"
对于像这样的每个新组应有的名称。如果你使用相同的名字它会让一切都搞砸了另一个认为你==
而不是===
item.ContactMode == 3
最好使用===
推荐阅读
- angular - 从 .ts 文件导出多个变量并以角度 4 导入另一个文件
- python - 如何使用公共证书 (.pem) 作为密钥计算文本的 HMAC(hsa256)
- swift - 条形图使用 UserDefaults 持久化图表值
- regex - \w 在 vim 搜索替换中不起作用,但 a-zA-Z 可以吗?
- r - ggfortify 不支持 survfit 多个协变量?
- python - AttributeError: __enter__ with Appjar subWindow GUI
- sas - 将数据分成不同的子集导致 SAS 中空间不足错误
- image-processing - 对图像进行分层采样
- mysql - 最好为每个具有选项的单独列制作表格,或者在 django 的模型类中制作选项元组
- typescript - Typescript Compiler - 实现自定义转换器