zheng 14 часов назад
Родитель
Сommit
a471d59dad
4 измененных файлов с 196 добавлено и 2 удалено
  1. 2 2
      vue/初阶/17.数据监听.html
  2. 52 0
      vue/高阶/Vue.nextTick.html
  3. 65 0
      vue/高阶/动画.html
  4. 77 0
      vue/高阶/生命周期.html

+ 2 - 2
vue/初阶/17.数据监听.html

@@ -59,8 +59,8 @@
             methods: {
                 changeName() {
                     // this.arr[1].name = '图图';
-                    // this.arr[1] = { name: "图图", age: 3 }
-                    this.$set(this.arr,1,{ name: "图图", age: 3 })
+                    this.arr[1] = { name: "图图", age: 3 }
+                    // this.$set(this.arr,1,{ name: "图图", age: 3 })
                     // Vue.set(this.arr,1,{ name: "图图", age: 3 })
                     console.log(this.arr, 'arr')
                 }

+ 52 - 0
vue/高阶/Vue.nextTick.html

@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+    <!-- 
+        
+    四个阶段:
+        初始:
+            beforeCreate:data和methods不可用
+            created:data和methods可用 DOM还未生成
+        挂载:
+            beforeMount 模版已编译 但没有挂载到页面上
+            mounted Dom已生成 可以操作Dom
+        更新:
+            beforeUpdate 数据变化 Dom未更新
+            updated 数据变化 Dom更新
+        销毁:
+            beforeDestory 实例还能用 
+            destoryed 实例已销毁
+    -->
+</head>
+
+<body>
+    <div id="app">
+        <h1>{{msg}}</h1>
+        <button @click="changeMsg">修改</button>
+    </div>
+    <script src="../初阶/vue.js"></script>
+    <script>
+        var app = new Vue({
+            el: "#app",
+            data: {
+                msg: "你好啊"
+            },
+            methods: {
+                changeMsg() {
+                    this.msg = '哈哈哈';
+                    console.log(document.querySelector("h1").innerHTML, '111');
+                    this.$nextTick(() => {
+                        // 视图更新 数据未更新
+                        console.log(document.querySelector("h1").innerHTML, '222');
+                    })
+                }
+            },
+        })
+    </script>
+</body>
+
+</html>

+ 65 - 0
vue/高阶/动画.html

@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+    <style>
+        .list-enter-active,
+        .list-leave-active {
+            transition: all 3s linear;
+        }
+
+        .list-enter-from,
+        .list-leave-to {
+            transform: translate(100px, 200px);
+            opacity: 0;
+        }
+    </style>
+</head>
+
+<body>
+    <!--
+     v-enter-from:进入动画的起始状态。在元素插入之前添加,在元素插入完成后的下一帧移除。
+
+    v-enter-active:进入动画的生效状态。应用于整个进入动画阶段。在元素被插入之前添加,在过渡或动画完成之后移除。这个 class 可以被用来定义进入动画的持续时间、延迟与速度曲线类型。
+
+    v-enter-to:进入动画的结束状态。在元素插入完成后的下一帧被添加 (也就是 v-enter-from 被移除的同时),在过渡或动画完成之后移除。
+
+    v-leave-from:离开动画的起始状态。在离开过渡效果被触发时立即添加,在一帧后被移除。
+
+    v-leave-active:离开动画的生效状态。应用于整个离开动画阶段。在离开过渡效果被触发时立即添加,在过渡或动画完成之后移除。这个 class 可以被用来定义离开动画的持续时间、延迟与速度曲线类型。
+
+    v-leave-to:离开动画的结束状态。在一个离开动画被触发后的下一帧被添加 (也就是 v-leave-from 被移除的同时),在过渡或动画完成之后移除。
+ -->
+    <div id="app">
+        <button @click="show = !show">修改</button>
+        <Transition name="list">
+            <div v-show="show">展示内容</div>
+        </Transition>
+    </div>
+    <script src="../初阶/vue.js"></script>
+    <script>
+
+        var app = new Vue({
+            el: "#app",
+            data: {
+                msg: "你好啊",
+                show: true
+            },
+            methods: {
+                changeMsg() {
+                    this.msg = '哈哈哈';
+                    console.log(document.querySelector("h1").innerHTML, '111');
+                    this.$nextTick(() => {
+                        // 视图更新 数据未更新
+                        console.log(document.querySelector("h1").innerHTML, '222');
+                    })
+                }
+            },
+        })
+    </script>
+</body>
+
+</html>

+ 77 - 0
vue/高阶/生命周期.html

@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+    <!-- 
+        
+    四个阶段:
+        初始:
+            beforeCreate:data和methods不可用
+            created:data和methods可用 DOM还未生成
+        挂载:
+            beforeMount 模版已编译 但没有挂载到页面上
+            mounted Dom已生成 可以操作Dom
+        更新:
+            beforeUpdate 数据变化 Dom未更新
+            updated 数据变化 Dom更新
+        销毁:
+            beforeDestory 实例还能用 
+            destoryed 实例已销毁
+    -->
+</head>
+
+<body>
+    <div id="app">
+        <h1>{{msg}}</h1>
+        <button @click="changeMsg">修改</button>
+    </div>
+    <script src="../初阶/vue.js"></script>
+    <script>
+        var app = new Vue({
+            el: "#app",
+            data: {
+                msg: "你好啊"
+            },
+            methods: {
+                aa() {
+                    console.log("你好")
+                },
+                changeMsg() {
+                    this.msg = '哈哈哈'
+                }
+            },
+            mounted() {
+                console.log("挂载后", this.$el)
+            },
+            beforeMount() {
+                console.log("挂载前", this.$el)
+            },
+            created() {
+                console.log(this.$el)
+                console.log("创建后", this.msg)
+            },
+            beforeCreate() {
+
+                console.log(this.$el)
+                console.log("创建前", this.msg)
+            },
+            beforeUpdate() {
+                console.log("更新前",this.$el,document.querySelector("h1").innerText)
+            },
+            updated() {
+                console.log("更新后",this.$el,document.querySelector("h1").innerText)
+            },
+            beforeDestory() {
+                console.log("销毁前")
+            },
+            destoryed() {
+                console.log("销毁后")
+            }
+        })
+    </script>
+</body>
+
+</html>