记录一下vue3.0与2.0简单使用上的区别

2021-01-06  本文已影响0人  六时未至

1、创建实例方式不同:2.0 使用构造函数new Vue的方式,将选项对象通过参数传入;3.0 使用Vue.createApp()静态方法创建。参数依然是选项多先发。2.0 使用mount(el)方式进行手动挂载;3.0使用mount(el)方式进行挂载,去除了符。
2、定义指令、组件等方法的不同: 2.0 定义指令和组件等是通过Vue的静态方法Vue.component()或者Vue.directive()等;3.0将静态方法改为了实例的方法app.component(),app.directive().
3、生命周期不同:2.0生命周期3个阶段:

emits: {
    // 没有验证
    click: null,

    // 验证submit 事件,接收参数为事件函数接收的参数
    submit: ({ email, password }) => {
      if (email && password) {
        return true
      } else {
        console.warn('Invalid submit event payload!')
        return false
      }
    }
  }

5、v-model不同:

<!-- v-model.uppercase -->
<div>
  <my-component v-model.uppercase="myText" />
  {{ myText}}
</div>
const app = Vue.createApp({
  data() {
    return {
      myText: 'test'
    }
  }
})

app.component('my-component', {
  props: {
    modelValue: String,
    modelModifiers: {
      default: () => ({})
    }
  },
  methods: {
    emitValue(e) {
      let value = e.target.value
      if (this.modelModifiers.uppercase) {
        value = value.toUpperCase()
      }
      this.$emit('update:modelValue', value)
    }
  },
  template: `<input
    type="text"
    :value="modelValue"
    @input="emitValue">`
})

app.mount('#app')

<!-- v-model:test.uppercase -->
<div>
  <my-component v-model:test.uppercase="myText" />
  {{ myText}}
</div>
const app = Vue.createApp({
  data() {
    return {
      myText: 'test'
    }
  }
})

app.component('my-component', {
  props: {
    test: String,
    testModifiers: {
      default: () => ({})
    }
  },
  methods: {
    emitValue(e) {
      let value = e.target.value
      if (this.testModifiers.uppercase) {
        value = value.toUpperCase()
      }
      this.$emit('update:test', value)
    }
  },
  template: `<input
    type="text"
    :value="test"
    @input="emitValue">`
})

app.mount('#app')

6、异步组件的一些对象参数发生变化
7、自定义指令不同
2.0 指令的钩子函数:

上一篇 下一篇

猜你喜欢

热点阅读