美文网首页
Vue3.0 双向数据绑定

Vue3.0 双向数据绑定

作者: 小俊的世界 | 来源:发表于2021-07-08 18:59 被阅读0次

背景

环境:vue3 + ts + vite
vue3.0版本的双向数据绑定,是作了一些改动的,v-model其实是变成了,modelValue 与 update:modelValue事件的组合,而在vue.2.x中的是 value与input事件的组合。因此编码时是需要注意的。

模板语法

<template>
 <el-input v-model = 'query.name' /> 
</template>
<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({
  setup(){
      const query = ref<{name:string}>()
      query.value = {name:'name'}
      return { query }
  }
})
</script>

在模板语法与vue2.x的使用方式并没有什么差异的,都是使用v-model指令的。

jsx/tsx中

在vue3.0 tsx中指令是可以使用的,因此可以写成:

<script lang="tsx">
import { defineComponent} from 'vue';
export default defineComponent({
  setup(){
      const query = ref<{name:string}>()
      query.value = {name:'name'}
      return ()=>{
            return <>
                  <el-input  v-model = {query.name}   {
                      ...{
                          'onUpdate:modelValue'(e){ 
                               console.log(e)  // 注意第一层 {} 解析时并不认为是对象
                         } 
                      }
                } />
          </>
      }
  }
})
</script>

始终需要注意绑定的值是需要响应式的 ,使用ref或者reactive进行包装的。

h,createVNode函数中

h,createVNode函数可以很方便的做底层的组件,可以更加充分的使用js/ts的完全编程能力。

<script lang="ts">
import { defineComponent, h, resolveComponent } from 'vue';
export default defineComponent({
  setup(){
      const query = ref<{name:string}>()
      query.value = {name:'name'}
      const com = resolveComponent('el-input')
      return ()=>{
            return h(com ,{
               modelValue: query.value.name,
              'onUpdate:modelValue'(e) {
                     query.value.name = e
              }})
      }
  }
})
</script>

需要说明的是:el-input 这个组件是需要全局注册的,不然无论采用 jsx/tsx 还是渲染函数(h,createVNode)都是没有办法找到的。在vue2.x项目中, webpack下的使用transform-vue-jsx转译,可以直接采用 h('el-input'),但是在vite+vue3.x的环境下,需要先使用resolveComponent显式的从全局组件中去查找名称为el-input的组件。

相关文章

  • 2020-08-27 前端面试题(vue)

    一、 vue双向绑定得原理: 二、vue2.0与vue3.0双向绑定得区别:

  • Vue3.0 双向数据绑定

    背景 环境:vue3 + ts + vitevue3.0版本的双向数据绑定,是作了一些改动的,v-model其实是...

  • Vue 中的双向数据绑定

    双向绑定 单向数据流 双向绑定 or 单向数据流 Vue 是单向数据流,不是双向绑定 Vue 的双向绑定是语法糖 ...

  • Vue之表单双向数据绑定和组件

    三、表单双向数据绑定和组件 目录:双向数据绑定、组件 1.双向数据绑定 1)什么是双向数据绑定Vue.js是一个M...

  • Vue双向数据绑定v-model

    v-model 数据双向绑定用作双向数据绑定 一、组件内部双向数据绑定 1、在实例的data中,设置content...

  • Vue入门(二)——数据绑定

    一、什么是双向数据绑定 双向数据绑定是Vue的核心功能之一。所谓双向数据绑定是指:HTML标签上的数据绑定到Vue...

  • [转] DataBinding 数据绑定

    数据绑定分为单项绑定和双向绑定两种。单向绑定上,数据的流向是单方面的,只能从代码流向 UI;双向绑定的数据是双向的...

  • 02Vue.js的数据绑定

    理解Vue的双向数据绑定 Vue有一个显著的地方就是它拥有双向数据绑定功能,那么何为双向数据绑定呢?双向是指:HT...

  • Vue和React数据绑定对比

    在数据绑定上来说,vue的特色是双向数据绑定,而在react中是单向数据绑定。 一 单向和双向数据绑定其实不是完全...

  • vue源码探究(第六弹)

    vue源码探究(第六弹) 继续之前的,差不多到最后一part了,数据的双向绑定。 双向数据绑定 双向数据绑定是建立...

网友评论

      本文标题:Vue3.0 双向数据绑定

      本文链接:https://www.haomeiwen.com/subject/nrmtpltx.html