组件绑定v-model,实现最大化复用

Posted diantao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组件绑定v-model,实现最大化复用相关的知识,希望对你有一定的参考价值。

看优秀的vue项目,对组件的封装做的都非常到位,比如一个按钮都可以实现复用,仔细研究会发现实现基础就是组件直接绑定v-model,来看看按钮:

比如有个点赞按钮,长这样:

技术图片

当点赞之后变成这样:

技术图片

相信很多人会直接在当前这个组件里写上DOM结构,样式和点击事件,其实这样会造成严重的耦合,也没法复用,封装起来就方便多了。

先建个按钮组件,approvelBtn.vue:

<template>
    <div class="approve-btn">
      <span @click="support" class="apv-btn">
        <span v-if="!value">点赞</span>
        <span v-else>已点赞</span>
      </span>
    </div>
</template>

<script>
export default {
  name: ‘ApprovelBtn‘,
  props: {
    value: {
      type: Boolean,
      default: true
    }
  },
  methods: {
    support() {
      this.$emit(‘input‘, true)
    }
  }
}
</script>

<style scoped>
  .approve-btn{
    line-height: 2.5;
  }
  .apv-btn{
    border:1px solid #CCC;
    padding: 0.5em 1em;
    border-radius: 0.5em;
    cursor: pointer;
  }
</style>

  

父组件引入即可:

<approvel-btn v-model="hasApv"></approvel-btn>

  

v-model的变量名自己随意写,当按钮点击后会执行

this.$emit(‘input‘, true)

  

‘hasApv’的值就会改变

以后想在哪个页面调用这个按钮都没问题,实现最大化的复用

以上是关于组件绑定v-model,实现最大化复用的主要内容,如果未能解决你的问题,请参考以下文章

vue3.x script setup实现v-model父子组件双向绑定

使用 v-model 实现 双向绑定.(子组件和父组件.)

Vue3的表单和开发模式

vue自定义组件实现v-model双向绑定

vue 自定义组件使用v-model

Vue的父子组件v-model双向绑定,父组件修改子组件中绑定的v-model属性