簡體   English   中英

是的,循環依賴:兩個相互要求的字段

[英]Yup cyclic dependency: Two fields mutually requiring each other

我有以下是的驗證模式

 const validationSchema = Yup.object().shape({
  name: Yup.string(),
  services: Yup.array(Yup.string().oneOf(SERVICES, "Invalid service!")),
  locations: Yup.array(Yup.string().oneOf(LOCATIONS, "Invalid location!")),
  distance: Yup.number()
    .typeError("Invalid distance!")
    .positive("Invalid distance!")
    .when("userFormattedAddress", {
      is: (val) => !!val,
      then: Yup.number().required(),
      otherwise: Yup.number(),
    }),
  userFormattedAddress: Yup.string("Invalid user location!").when("distance", {
    is: (val) => !!val,
    then: Yup.string().required(),
    otherwise: Yup.string(),
  }),
  userCoordinates: Yup.array(
    Yup.number("Invalid user location!").positive("Invalid user location!")
  ),
});

期望的行為是當輸入距離時,用戶必須輸入地址,並且當用戶輸入地址時,他們也必須指定距離。 但是,我遇到了循環依賴……有什么想法嗎? 謝謝!

好的,我找到了答案:

 const validationSchema = Yup.object().shape({
 name: Yup.string(),
 services: Yup.array(Yup.string().oneOf(SERVICES, "Invalid service!")),
 locations: Yup.array(Yup.string().oneOf(LOCATIONS, "Invalid location!")),
 distance: Yup.number()
   .typeError("Invalid distance!")
   .positive("Invalid distance!")
   .when("userFormattedAddress", {
     is: (val) => !!val,
     then: Yup.number().required(),
     otherwise: Yup.number(),
   }),
 userFormattedAddress: Yup.string("Invalid user location!").when("distance", {
   is: (val) => !!val,
   then: Yup.string().required(),
   otherwise: Yup.string(),
 }),
 userCoordinates: Yup.array(
   Yup.number("Invalid user location!").positive("Invalid user location!")
 ),
}, ["distance", "userFormattedAddress"]);

您需要將數組中的字段作為 noSortedEdges 參數傳遞的位置

暫無
暫無

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

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