vue控制只读_如何写好一个vue组件,老夫的一年经验全在这了

本文介绍了如何利用Vue的prop、事件和插槽设计组件,强调了灵活性和最佳实践。prop用于接收外部数据,事件用于组件间的通信,插槽则允许外部内容插入组件。文章讨论了如何处理多个prop、computed属性的使用、自定义v-model以及通过函数传入控制逻辑。此外,还提到了避免父组件直接操作子组件以及插槽的最佳使用策略。
摘要由CSDN通过智能技术生成
一个适用性良好的组件,一种是可配置项很多,另一种就是容易覆写,从而扩展功能

Vue 组件的 API 来自三部分——prop、事件和插槽:

  • prop 允许外部环境传递数据给组件
  • event 允许从组件内触发外部环境的副作用
  • slot 允许外部环境将额外的内容组合在组件中

prop

组件具有自身状态,当没有相关 porps 传入时,使用自身状态完成渲染和交互逻辑;当该组件被调用时,如果有相关 props 传入,那么将会交出控制权,由父组件控制其行为

仅一个值传入组件

  • 如果该组件设计上支持双向绑定,可使用v-model将该参数传入组件,减少记忆成本(毕竟 vue 官方的语法糖,不用白不用)
复制代码
  • 如果该组件可以独立运行,不依赖父组件时,还是给这个值起个名字吧
22168dcc5c5de001750b4ce5df5bcc3b.png

很多值需要传入组件

比如当一个组件有诸多配置项,且当没有传入配置项取用组件内部默认项的时候,我们原先的父组件写法:

复制代码

其实可以在父组件上直接使用v-bind={子组件props集合}

但是为了方便覆写子组件的内部配置项,不妨使用一个对象将配置收集到一起,但是这种做法不能利用 props 验证对象里面每个的值类型

// 子组件内部读取配置,通过扩展运算符替换掉默认配置const setting ={ ...defaultSetting, ...this.setting}复制代码

computed 属性

vue 的 computed 属性默认是只读的,你可以提供一个 setter。它可以优化我写组件的逻辑,适用于父组件处理的值和子组件处理的值是同一个的情况。

用于父组件处理的值和子组件处理的值是同一个的情况

export default { props: { value: {} }, computed: { email: { get() { return this.value }, set(val) { this.$emit('input', val) this.$emit('change', val) } } }}复制代码
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值