26_components_生命周期.html 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <script src="./js/vue.js"></script>
  8. </head>
  9. <body>
  10. <div id="app">
  11. <!-- is 用来切换显示的组件 is等于哪个组件名称就展示哪个组件 -->
  12. <div v-bind:is="comp"></div>
  13. <button @click="parentHandle">修改组件</button>
  14. </div>
  15. <script>
  16. var app = new Vue({
  17. el: '#app',
  18. data:{
  19. comp:"box1"
  20. },
  21. methods: {
  22. parentHandle(){
  23. this.comp = "box2"
  24. }
  25. },
  26. beforeCreate() {
  27. console.log('父组件 beforeCreate');
  28. },
  29. created() {
  30. console.log('父组件 created');
  31. },
  32. beforeMount() {
  33. console.log('父组件 beforeMount');
  34. },
  35. mounted() {
  36. console.log('父组件 mounted');
  37. },
  38. beforeUpdate() {
  39. console.log('父组件 beforeUpdate');
  40. },
  41. updated() {
  42. console.log('父组件 updated');
  43. },
  44. components: {
  45. box1:{
  46. template: '<div @click="childHandle">box1{{num}}</div>',
  47. data(){
  48. return {
  49. num:1
  50. }
  51. },
  52. methods: {
  53. childHandle() {
  54. this.num++;
  55. }
  56. },
  57. beforeCreate() {
  58. console.log('子组件 beforeCreate');
  59. },
  60. created() {
  61. console.log('子组件 created');
  62. },
  63. beforeMount() {
  64. console.log('子组件 beforeMount');
  65. },
  66. mounted() {
  67. console.log('子组件 mounted');
  68. },
  69. beforeUpdate() {
  70. console.log('子组件 beforeUpdate');
  71. },
  72. updated() {
  73. console.log('子组件 updated');
  74. },
  75. beforeDestroy() {
  76. console.log('子组件 beforeDestroy');
  77. },
  78. destroyed() {
  79. console.log('子组件 destroyed');
  80. }
  81. },
  82. box2:{
  83. template: '<div>box2</div>'
  84. }
  85. }
  86. })
  87. </script>
  88. </body>
  89. </html>