簡體   English   中英

使用 Yup 訪問必填字段

[英]Access to required fields with Yup

我使用 react-hook-form 和 yup 來驗證我的 forms。

我想知道模式的所有必填字段以在表單中顯示一些信息(如必填字段的“*”)。 我們可以通過這行代碼實現這一點:

schema.describe().fields[field].tests.findIndex(({ name }) => name === 'required'

但是,此代碼不適用於條件驗證。

架構示例:

const schema = yup.object().shape({
    email: yup
    .string()
    .email()
    .required(),

    isProfileRequired: yup
    .boolean(),

    profile:  yup
    .object()
    .when('isProfileRequired',{
        is: (isProfileRequired) => isProfileRequired,
        then:
            yup
            .object()
            .nullable()
            .required()
    })
})

有沒有辦法在表單中檢索這些信息?

實際上沒有“好”的方法來做到這一點,但這有效:

function isRequired(field){
    return schema.fields[field]._exclusive.required || false 
}

注意:如果需要或未定義, schema.fields[field]._exclusive.required返回 true。

測試exclusiveTests而不是_exclusive對我有用。

const isRequired = 
validationSchema?.fields[aField.name]?.exclusiveTests?.required || false;

你能告訴你使用的Yup版本嗎? 我不明白它適用於你的最后一個例子。 我使用的是 0.32.11 版

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM