• vue2 mixins混入


    1.mixins混入

    vue中提供了一种复用性的操作,所混入的对象包含任意组件的选项(data|computed,生命周期|watch,methods)

    2.mixins使用基本规则(选项合并冲突)

    • data | computed:数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先
    • 生命周期 | watch:同名钩子函数将合并为一个数组,因此都将被调用。另外,混入对象的钩子将在组件自身钩子之前调用
    • methods:将被合并为同一个对象。两个对象键名冲突时,取组件对象的键值对

    1. <div id="app">
    2. <div>data里面的数据:{{msg}}div>
    3. <div>computed里面的数据:{{title}}div>
    4. <div>watch里面的数据:{{obj.a}}div>
    5. <button @click="getMsg">获取方法的数据button>
    6. div>
    7. <script>
    8. const HomeMixin = {
    9. data() {
    10. return {
    11. msg: "home的msg",
    12. obj: {
    13. a: "home watch里面的数据a"
    14. }
    15. }
    16. },
    17. computed: {
    18. title() {
    19. return this.msg + "在computed里面"
    20. }
    21. },
    22. watch: {
    23. 'obj.a': function () {
    24. console.log("home里面watch对象的属性obj.a的变化");
    25. }
    26. },
    27. mounted() {
    28. console.log("home的生命周期方法mounted");
    29. },
    30. methods: {
    31. getMsg() {
    32. console.log("home的methods");
    33. }
    34. }
    35. };
    36. new Vue({
    37. el: "#app",
    38. mixins: [HomeMixin],
    39. data() {
    40. return {
    41. msg: "index msg",
    42. obj: {
    43. a: 1
    44. }
    45. }
    46. },
    47. computed: {
    48. title() {
    49. return this.msg + "--computed"
    50. }
    51. },
    52. watch: {
    53. 'obj.a': function () {
    54. console.log("index页面里面watch对象的属性obj.a的变化");
    55. }
    56. },
    57. mounted() {
    58. console.log("index页面的生命周期方法mounted");
    59. },
    60. methods: {
    61. getMsg() {
    62. this.obj.a = "ss"
    63. console.log("index页面的methods里面的方法getMsg");
    64. }
    65. }
    66. });
    67. script>

    3.全局混入

    在main.js入口文件中使用Vue.mixin()引入。

    尽量不用使用mixin全局混入,它将影响每一个之后创建的 Vue 实例(包括第三方插件 )

    1. // 为自定义的选项 'myOption' 注入一个处理器。
    2. Vue.mixin({
    3. created: function () {
    4. var myOption = this.$options.myOption
    5. if (myOption) {
    6. console.log(myOption)
    7. }
    8. }
    9. })
    10. new Vue({
    11. myOption: 'hello!'
    12. })

  • 相关阅读:
    docker理论+部署(一)
    有了低代码,二次开发都不是事!
    RS485收发自动切换电路 [原创www.cnblogs.com/helesheng]
    LeetCode 125.验证回文串
    【开发小记】vuex存储用户信息
    【C/C++】你知道位段吗?段位?不,是位段!
    SQLServer连接表
    【运维/安装】Flink + MinIO:实现light-weighting思路下的集群(集群、高可用&&POC、快速搭建)
    QT--Opencv下报错Mat/imwrite/imread找不到文件
    2.1进程与线程【操作系统】【王道听课笔记与复述】
  • 原文地址:https://blog.csdn.net/qq_34569497/article/details/133967944