Javascript ReactJS-Formik SelectAll复选框
我正在使用Formik,在我的表单中。我有一个对象数组,这些对象来自具有以下结构的服务器:Javascript ReactJS-Formik SelectAll复选框,javascript,reactjs,forms,formik,Javascript,Reactjs,Forms,Formik,我正在使用Formik,在我的表单中。我有一个对象数组,这些对象来自具有以下结构的服务器: { "name": "Screen1", "viewable": { "permission": "ViewScreen1", "checked": true }, "manageable": { "permission": "ViewScreen2",
{
"name": "Screen1",
"viewable": {
"permission": "ViewScreen1",
"checked": true
},
"manageable": {
"permission": "ViewScreen2",
"checked": false
}
},
...moreObjectsHere
我通过它们进行映射,以便为每个屏幕创建一个带有2个复选框的列表
renderField(field, index) {
const { keyField } = this.props;
const { name, viewable, manageable } = field;
return (
<div className="row" key={hash({ ...field, index })}>
<div className='col-4'>
{name}
</div>
<div className="col-2 text-center">
{viewable && (
<Fragment>
{
<Field
component={PermissionsCheckbox}
name={`${keyField}.${index}.viewable.checked`}
disabled={!viewable}
/>
}
</Fragment>
)}
</div>
<div className="col-2 text-center">
{manageable && (
<Fragment>
{
<Field
component={PermissionsCheckbox}
name={`${keyField}.${index}.manageable.checked`}
disabled={!manageable}
/>
}
</Fragment>
)}
</div>
</div>
);
}
render() {
const { dto, keyField, mode } = this.props;
return (
<Fragment>
<div className="row">
<div className="col-2 offset-4 text-center">
<h6 className="font-weight-bold">View</h6>
</div>
<div className="col-2 text-center">
<h6 className="font-weight-bold">Manage</h6>
</div>
</div>
<FieldArray
render={() => dto[keyField].map((field, index) => this.renderField(field, index))}
/>
</Fragment>
);
}
我在这里有点不知所措。我想用Formik本身的` setFieldValuez'强制设置值,但我将如何以及在何处实现这一点
在网上查过了,但实际上没有找到任何能帮助我快速完成任务的东西关于此功能,您对Formik有任何经验吗?谢谢
renderSelectAll = () => (
<div className="row">
<div className="col-4 my-2 font-weight-medium">Select All</div>
<div className="col-2 text-center">
<Field
component={PermissionsCheckbox}
name="permission-set-1"
/>
</div>
<div className="col-2 text-center">
<Field component={PermissionsCheckbox} name="permission-set-2" />
</div>
</div>
);
<Fragment>
<div className="border-top my-2 w-75" />
{this.renderSelectAll()}
</Fragment>