javascript - 如何在“validationSchema”Formik 和 Yup 中插入变量?
问题描述
我尝试使用<FieldArray />
Yup 在 Formik 中进行验证。单击“添加用户”后,我生成了一堆用户名。每个字段看起来像:
<Field
type="text"
name={`users.${index}.name`}
/>
<ErrorMessage
name={`users.${index}.name`}
component="div"
className="invalid-feedback"
/>
我应该是什么validationSchema
样子?在我看来,我应该为shape
方法添加索引而不是简单的名称。但是我该怎么做呢?
validationSchema={yup.object().shape({
// ?????
name: yup.string().required('First Name is required'),
})}
解决方案
编辑:
您要做的是Formik
在初始值更改时更新组件。将enableReinitialize设置为 true
你可以做两件事:
- 像这样将新的键/值对附加到对象
var eatables = {vegetable: 'Carrot'}
var fruit_var = 'fruit'
eatables[fruit_var] = 'Apple'
console.log(eatables) // {fruit: 'Apple', vegetable: 'Carrot'}
- 在 ES6 中,您可以使用速记计算属性名称。
var fruit_var = 'fruit'
var eatables = {[fruit_var]: 'Apple', vegetable: 'Carrot'}
console.log(eatables) // {fruit: 'Apple', vegetable: 'Carrot'}
推荐阅读
- c# - 与项目模板中的用户控件一起使用时显示隐藏转发器项目模板字段
- html - 移动到 Rails 中同一页面内的某个部分
- java - BigInteger 模数不是正数
- javascript - 将具有数组值的对象转换为另一个对象数组
- go - Golang 将 UTF-8 字符串转换为 ASCII
- sql - 获取过去 2 周在任何给定日期发生的事件
- sql-server - 存储过程中的服务器主体错误,同时忽略 USE 中指定的数据库
- node.js - 为什么我不能安装 Angular cli?npm install -g @angular/cli 不安装
- c# - 将数据网格复选框中的值更新或插入到数据库中
- google-chrome - 如何使 Chrome 扩展在从 WebStorm 打开的 Chrome 实例中可用?