vue扫漏--v-bind

64 阅读1分钟

1.动态绑定class对象语法

对象语法

<template>
  <div class="main-wrapper">
    <b-button
      type="primary"
      size="small"
      :class="{'btn-save': isActive}"
      @click="change"
    >
      切换
    </b-button>
  </div>
</template>

<script>
import { reactive, toRefs } from '@vue/composition-api'

export default {
  name: 'Main',
  components: {
  },
  setup (props, context) {
    const state = reactive({
      isActive: false
    })
    const change = () => {
      state.isActive = !state.isActive
    }
    return {
      ...toRefs(state),
      change
    }
  }
}
</script>

<style lang="scss" scoped>
.main-wrapper {
  .btn-save {
  }
}
</style>

可多个键值对

<b-button
  type="primary"
  size="small"
  :class="{'btn-save': isActive, 'other': true}"
  @click="change"
>
  切换
</b-button>

可以和普通的键值对共存

<b-button
  type="primary"
  size="small"
  class="my-btn"
  :class="{'btn-save': isActive, 'other': true}"
  @click="change"
>
  切换
</b-button>

2.动态绑定class数组语法

<template>
  <div class="main-wrapper">
    <b-button
      type="primary"
      size="small"
      class="my-btn"
      :class="['btn-save', currentClass, {'test': isActive}, isActive ? 'test-btn' : '']"
      @click="change"
    >
      切换
    </b-button>
  </div>
</template>

<script>
import { reactive, toRefs } from '@vue/composition-api'

export default {
  name: 'Main',
  components: {
  },
  setup (props, context) {
    const state = reactive({
      isActive: false,
      currentClass: 'my-btn'
    })
    const change = () => {
      state.isActive = !state.isActive
    }
    return {
      ...toRefs(state),
      change
    }
  }
}
</script>

<style lang="scss" scoped>
.main-wrapper {
  .btn-save {
  }
}
</style>

3.动态绑定style -对象类型

<template>
  <div class="main-wrapper">
    <b-button
      type="primary"
      size="small"
      :style="{color: fontColor, 'font-size': '30px'}"
      @click="change"
    >
      切换
    </b-button>
  </div>
</template>

<script>
import { reactive, toRefs } from '@vue/composition-api'

export default {
  name: 'Main',
  components: {
  },
  setup (props, context) {
    const state = reactive({
      isActive: false,
      fontColor: 'red'
    })
    const change = () => {
      state.isActive = !state.isActive
    }
    return {
      ...toRefs(state),
      change
    }
  }
}
</script>

<style lang="scss" scoped>
.main-wrapper {
  .btn-save {
  }
}
</style>

4.动态绑定style -对象

<template>
  <div class="main-wrapper">
    <b-button
      type="primary"
      size="small"
      :style="objStyle"
      @click="change"
    >
      切换
    </b-button>
  </div>
</template>

<script>
import { reactive, toRefs } from '@vue/composition-api'

export default {
  name: 'Main',
  components: {
  },
  setup (props, context) {
    const state = reactive({
      isActive: false,
      fontColor: 'red',
      objStyle: {
        fontSize: '30px',
        color: 'red'
      }
    })
    const change = () => {
      state.isActive = !state.isActive
    }
    return {
      ...toRefs(state),
      change
    }
  }
}

5.动态绑定style -数组语法

<b-button
  type="primary"
  size="small"
  :style="[objStyle, {backgroundColor: 'black'}]"
  @click="change"
>
  切换
</b-button>

6.动态绑定属性名

<template>
  <div class="main-wrapper">
    <b-button
      type="primary"
      size="small"
      :[name]="'test'"
      @click="change"
    >
      切换
    </b-button>
  </div>
</template>

<script>
import { reactive, toRefs } from '@vue/composition-api'

export default {
  name: 'Main',
  components: {
  },
  setup (props, context) {
    const state = reactive({
      isActive: false,
      name: 'class'
    })
    const change = () => {
      state.isActive = !state.isActive
    }
    return {
      ...toRefs(state),
      change
    }
  }
}
</script>

<style lang="scss" scoped>
.main-wrapper {
  .btn-save {
  }
}
</style>

7.直接绑定对象(给组件传参)

<template>
  <div class="main-wrapper">
    <h2 v-bind="infos">bind</h2>
  </div>
</template>

<script>
import { reactive, toRefs } from '@vue/composition-api'

export default {
  name: 'Main',
  components: {
  },
  setup (props, context) {
    const state = reactive({
      infos: {
        name: 'test',
        age: 20,
        height: 180
      }
    })
    return {
      ...toRefs(state)
    }
  }
}
</script>

<style lang="scss" scoped>
.main-wrapper {
  .btn-save {
  }
}
</style>