reactjs - Formik FieldArray 不接受复选框对象
问题描述
我正在尝试在 Formik 中推送一个复选框对象,但它不起作用。我参考了https://codesandbox.io/s/formik-example-forked-owodd?file=/index.js
但我想将对象推入initialValue。
下面是我的做法
{userManagement.map((permissions) => (
<li className="col-sm-3 col-xs-6" key={permissions.task}>
<label className="checkbox">
<input
name="permission"
type="checkbox"
value={permissions}
onBlur={(e) => {
if (e.currentTarget.checked) {
push({ permission: permissions });
console.log(values.permission);
} else {
const idx = values.permission.indexOf(permissions.value);
remove(idx);
}
}}
/>
<span />
{permissions.label}
</label>
</li>
))}
解决方案
我对此的解决方案是:
<FieldArray
name="permission"
render={({ push, remove }) => (
<ul className="sub-rights-area row">
{permissions.map((perm) => (
<li className="col-sm-3 col-xs-6" key={perm.task}>
<label className="checkbox">
<input
name="permission"
type="checkbox"
value={perm.task}
checked={values.permission.map((e) => e.task).includes(perm.task)}
onChange={(e) => {
if (e.target.checked) {
push({ status: perm.status, task: perm.task });
console.log(values.permission);
} else {
const index = values.permission
.map(function (e) {
return e.task;
})
.indexOf(perm.task);
remove(index);
}
}}
/>
<span />
{perm.name}
</label>
</li>
))}
</ul>
)}
/>
推荐阅读
- apache-kafka - 如何配置kafka connect使用Avro Schema?
- vue.js - 添加和读取存储在 vuex 中的 json 数据
- elasticsearch - NEST elasticsearch 客户端库中 PropertyPathMarker 的替代方案
- apache-spark - 尝试从 aws 胶水目录表中读取值为“-”的列时获取 null
- c - 编译 LD_PRELOAD 包装器的冲突类型
- c++ - 需要帮助了解 std::promise 和 std::future 在这种情况下如何工作
- android - 使用新的密钥库构建混淆的 *.apk 以用于发布 (Flutter)
- prestashop-1.7 - 类/db/Db.php 中的 Prestashop 错误错误
- android - Android Chromium 构建因 NDK 库加载而失败
- java - 配置项目 ':app' 时出现问题。> compileSdkVersion 未指定