是的,子模式访问父值(或将值传递给子值)
Posted
技术标签:
【中文标题】是的,子模式访问父值(或将值传递给子值)【英文标题】:Yup Child Schema accessing parent value (or passing the value to the child) 【发布时间】:2021-12-30 12:40:05 【问题描述】:我有以下架构,我正在尝试确定如何允许嵌套的 Yup.object().shape(..) 访问 RuleSchema 验证类型代码(或将其传递给子架构)
export const RuleSchema = Yup.object().shape(
description: Yup.string().required('Required').min(2).max(25),
fieldId: Yup.number().required('Required'),
validationTypeCode: Yup.string().required('Required'),
failureAction: Yup.string().required('Required'),
failureActionValue: Yup.string().required('Required'),
dataEntryWorkFlowRuleValidationList: Yup.array().of(
Yup.object().shape(
//I need to be able to access the validationTypeCode from the parent schema
fieldValue: Yup.string().min(5)
)
)
)
【问题讨论】:
【参考方案1】:我已经设法找到一种适用于我的场景的方法,但我不确定这是不是最好的方法。
架构现在是:
const RuleSchema = Yup.object().shape(
description: Yup.string().required('Description Required').min(2).max(25),
fieldId: Yup.number().required('dRequired'),
validationTypeCode: Yup.string().required('Required'),
failureAction: Yup.string().required('Required'),
failureActionValue: Yup.string().required('Required'),
dataEntryWorkFlowRuleValidationList: Yup.array().of(
Yup.object().shape(
fieldValue: Yup.string().when("$rule", (rule, schema) =>
return rule.fieldLength ? schema.max(rule.fieldLength, 'Field Value is too long') : schema
)
)
)
)
我将验证(包括正在验证的整个记录)称为上下文。
RuleSchema.validateSync(_rule, context: rule: _rule )
【讨论】:
以上是关于是的,子模式访问父值(或将值传递给子值)的主要内容,如果未能解决你的问题,请参考以下文章
选择时将值从 TabBarController 传递给子视图控制器