发布于 2026-01-06 6 阅读
0

Vue 高级技巧速查表 目录

Vue 高级技巧速查表

目录

嘿,DEV.to社区的各位!

由于我经常使用 Vue,所以会遇到很多问题需要解决。相信我,没有什么比解决一个困扰开发者多年的难题更让人感到满足的了!xD

所以,我在这里和大家分享一些我用来克服一些问题的技巧,这些技巧或许在某些时候对你们也有用。

本文的日文版本可在以下网址找到:https://qiita.com/_masa_u/items/6599546a7f3db2e2ffbc感谢

享受!

目录

强制重新渲染

在某些情况下,需要强制 Vue 重新渲染组件,因为它无法跟踪某些更改。

有一些方法可以做到这一点,例如使用一些v-if技巧,但正确的方法是使用forceUpdate以下方法:



  export default {
    methods: {
      forceUpdateMyComponent() {
        this.$forceUpdate()
      },
    },
  }


Enter fullscreen mode Exit fullscreen mode

请记住,$必须在您的 Vue 实例中使用此方法。
另外需要注意的是,此方法不会更新任何计算属性,而只会强制重新渲染组件的视图。

观察嵌套数据

有时您可能需要查看一些嵌套数据,您可以使用点号表示法来实现这一点:



  export default {
    data() {
      return {
        myInfo: {
          firstName: 'Adnan'
        }
      }
    },
    watch: {
      'myInfo.firstName'() {
        console.log('Here');
      }
    }
  }


Enter fullscreen mode Exit fullscreen mode

上面的代码适用于你知道要监视对象中的哪个属性的情况!
但如果你想监视整个对象及其所有值呢?



  export default {
    data() {
      return {
        myFruits: {apple: 'red', banana: 'yellow'},
      }
    },
    methods: {
      changeIt() {
        this.myFruits.apple = 'green'
      },
    },
    watch: {
      myFruits: {
        deep: true,
        handler() {
          console.log('Fruits updated!')
        },
      },
    },
  }


Enter fullscreen mode Exit fullscreen mode

你可以先将你的监视对象定义为一个对象,而不是一个函数,然后使用deep键和值true来监视你的对象,并将你想要在数据更改时触发的内容放在一个名为 `watch` 的函数中handler

支持 v 模型的自定义组件

如您所知,v-model它用于创建输入元素/组件和数据属性之间的双向绑定。

如果您正在创建一个自定义组件并希望它支持该功能,v-model您可以发出input关键字,为了接收最初通过该关键字传递给您的组件的内容,v-model您只需获取一个名为的属性即可value

为了便于理解,请查看以下代码:



<template>
    <div>
        <label>My custom test input: <input :value="inputValue" @input="emitTheData" /></label>
    </div>
</template>

<script>
  export default {
    props: ['value'],
    data() {
      return {
        inputValue: value
      }
    },
    methods: {
      emitTheData() {
        this.$emit('input', this.inputValue)
      }
    }
  }
</script>


Enter fullscreen mode Exit fullscreen mode

这个简单的组件会将传递给它的数据双向绑定。

注意:如您所见,我将名为 `prop` 的属性赋值给了value名为 `data` 的属性inputValue,并在输入框中使用它。您可能会认为我可以直接将属性传递给输入框,但正如 Vue 所建议的,最好不要直接修改属性。

功能组件

想象一下,有一个组件既没有监听属性,也没有计算属性,更没有方法!你只会用它来渲染其他组件,并赋予它们一些属性。如果真是这样,既然没有生命周期方法,为什么还要浪费 Vue 的时间呢?

功能组件可以定义如下:



<template functional>
  <div>{{ props.foo }}</div>
</template>


Enter fullscreen mode Exit fullscreen mode

注意:请记住,这些组件中没有this上下文,因为它们是函数式组件!

您可以点击以下链接了解更多关于 Vue 函数式组件的信息:
Vue 函数式组件


如果您还有其他技巧可以加快 Vue 应用的运行速度或提升开发效率,请告诉我,我会将它们添加到这里。

点击此处查看我的免费Node.js基础电子书:

文章来源:https://dev.to/adnanbabakan/vue-advanced-tricks-cheat-sheet-3ee3