如何在 vue.js 中动态切换 3 个或更多 font-awesome 图标

how to toggle 3 or more font-awesome icons dynamically in vue.js

我正在用 vue 创建剪刀石头布迷你游戏,我试图找到一种方法来切换 classes 之类的变量。例如:

<template>
  <div id="human">
    <div class="text-center">
      <div class="h2 mb-5">Human</div>

      <!-- PLEASE CHECK BELOW HERE -->
      <i class="play-hand far fa-hand-{{ iconName }}"></i>
      <!-- OR -->
      <i class="play-hand far {{ icon }}"></i>

      <div class="h3 mt-4">{{ activeHand }}</div>
      <div class="row select-hand mt-4">
        <div class="col-md-4">
          <i class="far fa-hand-rock" @click="setHand(hands[0])"></i>
        </div>
        <div class="col-md-4">
          <i class="far fa-hand-paper" @click="setHand(hands[1])"></i>
        </div>
        <div class="col-md-4">
          <i class="far fa-hand-scissors" @click="setHand(hands[2])"></i>
        </div>
      </div>
    </div>
  </div>
</template>

我用评论标记了。我很确定你得到了我想做的事情。 我不想为此使用 document.querySelector()


<script>
export default {
  data: () => {
    return {
      activeHand: 'Choose a Hand',
      hands: [
        {
          name: 'Rock',
          strength: 'scissor',
          weakness: 'paper',
          icon: 'fa-hand-rock'
        },
        {
          name: 'Paper',
          strength: 'rock',
          weakness: 'scissor',
          icon: 'fa-hand-paper'
        },
        {
          name: 'Scissor',
          strength: 'paper',
          weakness: 'rock',
          icon: 'fa-hand-scissors'
        }
      ]
    }
  },
  methods: {
    setHand (hand) {
      console.log(hand.name)
      this.activeHand = hand.name
      console.log(hand.icon)

      let playHandSelector = document.querySelector('.play-hand')
      playHandSelector.classList.remove(this.activeHand.includes(hand))
      playHandSelector.classList.add(hand.icon)
    }
  }
}
</script>

<style lang="scss">
#human .far {
  transform: rotate(90deg);
}
</style>

必须有一种 vue 方法可以通过名称动态切换 class。也许没有 true/false 切换?

您必须为 class 绑定使用 Vue 的 v-bind 指令,并将任何变量用法放入该标记中。查看文档 here.

最终您的代码可能如下所示。

<i class="play-hand far" :class="icon"></i>

请记住在使用 objects or arrays.

时使用正确的 class 绑定语法