• VUE mixin 使用


    mixin 混入

    1. html>
    2. <head>
    3. <meta charset="UTF-8">
    4. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    5. <title>hello worldtitle>
    6. <script src="https://unpkg.com/vue@next">script>
    7. head>
    8. <body>
    9. <div id="root">div>
    10. body>
    11. <script>
    12. const MyMixin = {
    13. data() {
    14. return {
    15. number: 2,
    16. count: 3
    17. }
    18. }
    19. }
    20. const app = Vue.createApp({
    21. data() {
    22. return {
    23. number: 1
    24. }
    25. },
    26. mixins: [MyMixin],
    27. template: `
    28. number:{{number}}
    29. count:{{count}}
    30. `
    31. });
    32. app.mount('#root');
    33. script>
    34. html>

    mixin 混入可以在组件内部缺少数据时,使用mixin内的数据代替。

    组件 data 优先级高于 mixin data 优先级

    上述代码中,count 使用了 mixin 内的数据,由于内部 number 已经被定义,vue 优先使用内部的数据,再使用 mixin 的数据。 

    2 mixin 生命周期优先级

    1. html>
    2. <head>
    3. <meta charset="UTF-8">
    4. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    5. <title>hello worldtitle>
    6. <script src="https://cdn.staticfile.org/vue/3.0.5/vue.global.js">script>
    7. head>
    8. <body>
    9. <div id="root">div>
    10. body>
    11. <script>
    12. const MyMixin = {
    13. created(){
    14. console.log('mixin created')
    15. }
    16. }
    17. const app = Vue.createApp({
    18. mixins:[MyMixin],
    19. created(){
    20. console.log('app created')
    21. }
    22. });
    23. app.mount('#root');
    24. script>
    25. html>

     mixin 中的生命周期函数和组件的生命周期函数都会执行,而且 mixin 中的优先级更高。

    效果如下:

    3 局部 mixin 和全局 mixin

    1. html>
    2. <head>
    3. <meta charset="UTF-8">
    4. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    5. <title>hello worldtitle>
    6. <script src="https://cdn.staticfile.org/vue/3.0.5/vue.global.js">script>
    7. head>
    8. <body>
    9. <div id="root">div>
    10. body>
    11. <script>
    12. const MyMixin = {
    13. data(){
    14. return{
    15. number:123
    16. }
    17. }
    18. }
    19. const app = Vue.createApp({
    20. mixins:[MyMixin],
    21. template:``
    22. });
    23. app.component("app",{
    24. template:"
      number:{{number}}
      "
    25. })
    26. app.mount('#root');
    27. script>
    28. html>

     使用 mixins:[myMixin] 是局部载入mixin的方式,子组件不能获得 mixins 的值

    运行结果如下:

    全局 mixin 写法:

    1. html>
    2. <head>
    3. <meta charset="UTF-8">
    4. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    5. <title>hello worldtitle>
    6. <script src="https://cdn.staticfile.org/vue/3.0.5/vue.global.js">script>
    7. head>
    8. <body>
    9. <div id="root">div>
    10. body>
    11. <script>
    12. const app = Vue.createApp({
    13. template: ``
    14. });
    15. app.mixin({
    16. data() {
    17. return {
    18. number: 123
    19. }
    20. }
    21. })
    22. app.component("app", {
    23. template: "
      number:{{number}}
      "
    24. })
    25. app.mount('#root');
    26. script>
    27. html>

    使用 app.mixin 挂载就是全局,组件可以自由使用。

    效果如下:

    4 自定义属性的优先级

    1. html>
    2. <head>
    3. <meta charset="UTF-8">
    4. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    5. <title>hello worldtitle>
    6. <script src="https://cdn.staticfile.org/vue/3.0.5/vue.global.js">script>
    7. head>
    8. <body>
    9. <div id="root">div>
    10. body>
    11. <script>
    12. const myMixin = {
    13. value: 1
    14. }
    15. const app = Vue.createApp({
    16. mixins: [myMixin],
    17. value: 25,
    18. template: `
      {{this.$options.value}}
      `
    19. });
    20. app.mount('#root');
    21. script>
    22. html>

    vue 中,自定义属性就是直接写到vue下的属性,使用 this.$options.value 即可访问。

    自定义属性组件的优先级比 mixin 优先级高。

    结果如下:

    mixin总结:

    组件 data,methods优先级高于 mixin data,methods 优先级

    生命周期函数,先执行 mixin 里边的,再执行组件里边的

    自定义的属性,组件中的优先级高于 mixin 属性的优先级。

  • 相关阅读:
    Databend 开源周报第 118 期
    RealSenseSR300工程环境配置说明
    Kafka实现高性能消息队列分析
    JavaScript实现选择排序
    VMware添加Ubuntu虚拟机-Ubuntu系统的安装-物联网开发
    【web-渗透测试方法】(15.8)测试逻辑缺陷、共享主机漏洞、Web服务器漏洞、信息泄露
    笔试题-构建非二叉树,且非递归遍历-利用栈
    香橙派orangepi ubuntu 安装安装redis
    Java中高级面试题
    【Linux】基础IO —— 上
  • 原文地址:https://blog.csdn.net/nullccc/article/details/126210991