是的,子模式访问父值(或将值传递给子值)

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 传递给子视图控制器

对自引用父/子列表的子值求和并将父值设置为总和

段值相关

如何将值从 NSTabViewController 传递给子视图?

突出显示 OBIEE 或 SQL 中父值的子值差异

VUE3+TS(父子兄弟组件通信)