以下是我使用vue写的前端页面,为什么我后面两条语句时v-bind是无法生效的呢

以下是我使用vue写的前端页面,为什么我后面两条语句时v-bind是无法生效的呢?

<template>
    <view>
        <view class="block" :class="{attackBlock:attackState}" @click="attack()"></view>
        <view class="block" :class="attackState ? 'attackBlock' : ''" @click="attack()"></view>
        <view class="block" :class="`attackBlock:${attackState}`" @click="attack()"></view>
        <view class="block" :class="'attackBlock:'+attackState" @click="attack()"></view>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                attackState:true
            }
        },
        methods: {
            attack(){
                this.attackState=!this.attackState
            }
        }
    }
</script>

<style>
    .block{
        width: 200rpx;
        height: 200rpx;
        background: green;
    }
    .attackBlock{
        background: pink;
        border-radius: 25rpx;
    }
</style>

img

第三个不对是因为:class绑定中不需要使用模板字符串,只需在双引号内使用表达式即可
第四个不对是因为在绑定中使用加号连接字符串不是合法的方式

<template>
  <view>
    <view class="block" :class="{ attackBlock: attackState }" @click="attack"></view>
    <view class="block" :class="attackState ? 'attackBlock' : ''" @click="attack"></view>
    <view class="block" :class="[attackState ? 'attackBlock' : '']" @click="attack"></view>
    <view class="block" :class="`attackBlock ${attackState ? 'attackState' : ''}`" @click="attack"></view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      attackState: true
    }
  },
  methods: {
    attack() {
      this.attackState = !this.attackState
    }
  }
}
</script>

<style>
.block {
  width: 200rpx;
  height: 200rpx;
  background: green;
}

.attackBlock {
  background: pink;
  border-radius: 25rpx;
}
</style>

我想知道一下这个是属于哪个知识点的(ps:双引号中需要的是什么类型,如何输入正确的类型),我好去学习学习哈哈

Class与Style绑定章节

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^