我有一个有两个 props 的组件,但是为了使 有效,应该只提供一个
示例 :

    // either `email` or `phone` should be passed (but not both)
    props: {
        email: {
            type: String,
            required: true
        },

        phone: {
            type: String,
            required: true
        },
    }
有没有办法验证基于彼此的 Prop ?
我想把它放在生命周期钩子(Hook)的某个地方,但感觉不合适。

最佳答案

我认为生命周期钩子(Hook)不是放置验证逻辑的好地方,因为钩子(Hook)只被调用一次,因此如果 prop 值在 future 发生变化,那么你将不会再次获得相同的验证。相反,您可以尝试在 Vue 实例的 $props 对象上使用 set a watcher 来监视将来对 props 值的任何更改,并在每次更改时触发验证,例如:

props: {
  email: String,
  phone: String
},
methods: {
  validateProps() {
    // Here you can access both props and add your validation logic
    if(!this.email && !this.phone){
      console.error('Please add either email or phone props');
    }
  }
},
watch: {
  $props: {
    immediate: true,
    handler() {
      this.validateProps();
    }
  }
}
在这里,我添加了一个基本的验证逻辑,您可以根据您的要求对其进行更新。

关于javascript - 有没有办法在 Vue 中验证多个 Prop ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62677250/

10-13 05:18