美文网首页
Vue 如何复制一个子组件的 Prop 类型在新的组件中使用

Vue 如何复制一个子组件的 Prop 类型在新的组件中使用

作者: 编程范儿 | 来源:发表于2021-09-02 14:33 被阅读0次

来看下下面这个使用场景,我们在这个组件中使用了一个Icon组件

<template>
  <div>
    <h2>{{ heading }}</h2>
    <Icon
      :type="iconType"
      :size="iconSize"
      :colour="iconColour"
    />
  </div>
</template>

而我们要在该组件中定义每一个 Icon 组件的属性值,这样一来,Icon 组件的 Prop 属性值需要在这重新定义一遍。

import Icon from './Icon';
export default {
  components: { Icon },
  props: {
    iconType: {
      type: String,
      required: true,
    },
    iconSize: {
      type: String,
      default: 'medium',
      validator: size => [
        'small',
        'medium',
        'large',
        'x-large'
      ].includes(size),
    },
    iconColour: {
      type: String,
      default: 'black',
    },
    heading: {
      type: String,
      required: true,
    },
  },
};

带来的问题是,当 Icon 组件的 prop 类型被更新时,我们可能会忘记返回这个组件并更新它们。无形中会增加我们维护组件的成本。

因此,我们需要复制 Icon 组件的 prop 类型:

import Icon from './Icon';
export default {
  components: { Icon },
  props: {
    ...Icon.props,
    heading: {
      type: String,
      required: true,
    },
  },
};

相关文章

  • Vue 如何复制一个子组件的 Prop 类型在新的组件中使用

    来看下下面这个使用场景,我们在这个组件中使用了一个Icon组件 而我们要在该组件中定义每一个 Icon 组件的属性...

  • 对vue的props实现双向数据流

    1、 使用Prop需要遵守的规定 vue官网中规定,vue中的Prop是单向数据流 在vue中,组件中的Prop是...

  • Vue Prop传值(父to子)

    通过Prop向子组件传递数据 如何使用 第一步父组件App.vue中 解释:把父组件中的data中的users:[...

  • prop-types

    在 React 中我们使用 prop-types 对组件的 prop 进行类型检测。 propTypes 能用来检...

  • vue组件通信(父子)

    在 Vue 中,父子组件的关系可以总结为 prop 向下传递,事件向上传递。父组件通过 prop 给子组件下发数据...

  • Vue-自定义事件

    在父组件使用prop 传递数据给子组件,子组件则是通过事件传递数据给父组件的。 Vue实例都会实现事件接口: 1....

  • Vue学习记录

    vue data 组件定义只接受 function 父子组件属性传递: 父组件的子组件中 v-bind :prop...

  • vue2.x的变化之一:禁止修改props

    一、说明在vue1.x中,可以在子组件中改变prop的值,在vue2.x中已被废弃。官方文档解释如下: 组件内修改...

  • Vue父子组件之间的通信

    在Vue中,父子组件的关系可以总结为,父组件通过prop向下传递,给子组件发数据,子组件通过事件给父组件发送消息。...

  • Vue组件间通信方式(使用.sync)

    在Vue1.x 中我们可能会需要对一个 prop 进行 "双向绑定"。当一个子组件改变了一个 prop的值时,这个...

网友评论

      本文标题:Vue 如何复制一个子组件的 Prop 类型在新的组件中使用

      本文链接:https://www.haomeiwen.com/subject/rvzqwltx.html