reactjs - 如果是数组,是否可以在 foreach 变量上添加 ref?
问题描述
我正在使用带有打字稿的反应,并希望迭代一个元素并为每个元素添加一个唯一的 ref 以检查是否选中了复选框元素。
private product1Ref: HTMLInputElement;
private product2Ref: HTMLInputElement;
private product3Ref: HTMLInputElement;
private product4Ref: HTMLInputElement;
const listItem: JSX.Element[] = [];
this.props.products.forEach((ele) => {
if(ele.isAvailable) {
listItem.push(
<li>
<label>
<input
type="checkbox"
id={ele.name}
ref={(input) => ?????? = input}
/>
{ele.name}
</label>
</li>
);
}
});
现在可以将 ref 添加到上述元素吗?如果是这样,我们该怎么做?如果不是,另一种检查复选框元素是否被选中的方法是什么?
解决方案
我会将需要引用的部分提取到组件中:
function Checkbox({id, label}) {
const [checked, setChecked] = useState(false);
const onChange = useCallback(e => {
setChecked(e.target.checked);
}, []);
return (
<label>
<input
type="checkbox"
id={id}
checked={checked}
onChange={onChange}
/>
{label}
</label>
);
}
然后使用该组件:
const listItem: JSX.Element[] = [];
this.props.products.forEach((ele) => {
if(ele.isAvailable) {
listItem.push(
<li>
<Checkbox id={ele.name} label={ele.name} />
</li>
);
}
});
推荐阅读
- spring-boot - 由于获取 BindingException 的 bean 验证错误,无法获取 UI
- ios - 从分段视图呈现模态
- regex - 如何在正则表达式中全局匹配斜杠,除非它位于字符串的开头
- android - 不执行switchMap时如何传递不同的值?安卓+科特林
- scala - 在 Spark 中加载数据时处理异常
- python - 未获得所需的列表输出
- php - 根据是否包含 php 过滤数组
- asp.net-mvc - javascript 文件在 wwwroot/js 文件夹中不可用
- firefox - Firefox 在 www-authenticate 协商期间未显示身份验证弹出窗口
- python - 选择 jupyter 中的所有匹配项