vue组件实现v-model,vue3 model

  vue组件实现v-model,vue3 model

  vue2中广泛使用V-model,但是这个指令一般用在输入框中,这个指令其实是一个语法糖果。下面文章主要介绍v-model在vue3组件中的使用及相关资料进行深入讲解。有需要的可以参考一下。

  

目录

  垂直模型输入使用双向绑定数据

  组件中的v模型

  其他书写方法

  摘要

  

v-model input中使用双向绑定数据

  在vue中,我们经常使用v-model与输入输入框的输入值绑定。我们应该都知道通过绑定v-bind的值,结合@input输入事件动态改变绑定值来实现双向绑定的简单实现原理,如下面的vue3实现代码所示:

  模板

  输入类型=text :值=tryText @input=handelInput

  h2{{tryText}}/h2

  /模板

  脚本

  从“vue”导入{ ref}

  导出默认值{

  setup(){

  让tryText=ref(默认输入值)

  函数句柄输入(e) {

  try text . value=e . target . value;//需要通过访问和修改//ref定义的数据。价值。

  }

  返回{

  尝试文本,

  手动输入

  }

  }

  }

  /脚本

  相信你在ipnut中经常使用v-model。现在我们来看看如何在组件中使用v-model,它的功能是什么。

  

组件中的v-model

  如何在组件中使用v-model?简单点说吧。

  父组件

  模板

  !-组件绑定v-模型-

  hy输入v模型=消息/hy输入

  h2{{message}}/h2

  /模板

  脚本

  从 @vue/reactivity 导入{ ref }

  从导入HyInput./components/HyInput.vue

  导出默认值{

  组件:{HyInput },

  setup(){

  Let message=ref(嘿嘿嘿-(*) (*))

  返回{

  消息,

  }

  }

  }

  /脚本

  组件

  模板

  button @ click= handelclick o(_)o哈哈~/button

  英国铁路公司

  /模板

  脚本

  导出默认值{

  道具:{

  模型值:字符串,

  },

  发出:[update:modelValue],

  设置(道具、上下文){

  函数handelClick() {

  context . emit( update:model value , o ( _ ) o哈哈~ )

  }

  返回{

  handelClick,

  }

  }

  }

  /脚本

  看到这里我们可能会有些疑惑。为什么要发动这次事件?为什么会有道具接收默认值?别急,从实现原理来看。

  这样我们就可以通过点击子组件的按钮来改变父组件中message的数据,这是组件中双向数据绑定的一个简单的v-model实现。

  既然是双向绑定,那就大胆猜测一下,是不是类似于输入中的实现原理。让我们来看看它是如何工作的。

  父组件

  模板

  !-原则-

  hy-input:model value= message @ update:model value= message=$ event /hy-input

  h2{{message}}/h2

  /模板

  脚本

  从 @vue/reactivity 导入{ ref }

  从导入HyInput./components/HyInput.vue

  导出默认值{

  组件:{HyInput },

  setup(){

  Let message=ref(嘿嘿嘿-(*) (*))

  返回{

  消息,

  }

  }

  }

  /脚本

  子组件是相同的。

  模板

  button @ click= handelclick o(_)o哈哈~/button

  英国铁路公司

  /模板

  脚本

  导出默认值{

  道具:{

  模型值:字符串,

  },

  发出:[update:modelValue],

  设置(道具、上下文){

  函数handelClick() {

  context . emit( update:model value , o ( _ ) o哈哈~ )

  }

  返回{

  handelClick,

  }

  }

  }

  /脚本

  结果,我们发现这是可以实现的。

  这样,我们可以很好地理解子组件中的发送事件和默认接收值。基本实现原理是:父组件将值传递给子组件,子组件通过props接收。但是,当子组件中的数据需要修改时,我们发送一个事件来告诉父组件,然后父组件接收传输的值进行修改。其实就是父子组件之间的通信,不过vue给我们做了一个简单的包。

  Ps:默认的v-model绑定数据在读取子组件时需要使用modelValue来接收启动事件。默认名称为update:modelValue。如果要绑定多个值或使用自定义名称,请参考下面的其他编写方法。

  Ps:你不能想通过修改道具来修改数据。首先,这是一个特别不好的养成习惯。然后我们知道道具的特性只负责传递数据。修改道具达不到想要的效果。我们应该通知父组件更新数据,这是最好的方法。

  

其他写法

  如果我们的子组件中的输入双向绑定到父组件,如何实现它?并且需要传输多个双向绑定数据?自定义名称呢?

  父组件

  模板

  !-组件绑定v-模型-

  hy-input v-model= message v-model:text= inputText /hy-input

  h2{{message}}/h2

  h2{{inputText}}/h2

  /模板

  脚本

  从 @vue/reactivity 导入{ ref }

  从导入HyInput./components/HyInput.vue

  导出默认值{

  组件:{HyInput },

  setup(){

  Let message=ref(嘿嘿嘿-(*) (*))

  Let inputText=ref(嘻嘻嘻)

  返回{

  消息,

  输入文本

  }

  }

  }

  /脚本

  组件

  模板

  button @ click= handelclick o(_)o哈哈~/button

  英国铁路公司

  输入类型=text v-model=customText

  英国铁路公司

  /模板

  脚本

  从“vue”导入{computed}

  导出默认值{

  道具:{

  模型值:字符串,

  文本:字符串

  },

  发出:[update:modelValue , update:text],

  设置(道具、上下文){

  函数handelClick() {

  context . emit( update:model value , o ( _ ) o哈哈~ )

  }

  let customText=computed({

  设置(值){

  context.emit(update:text ,值)

  },

  get(){

  返回道具. text

  }

  })

  返回{

  handelClick,

  自定义文本,

  }

  }

  }

  /脚本

  多个绑定值和重命名方法:v-model: text="input text "子组件中的props直接是文本。启动事件名称为更新:文本。

  这里我们看到,为了实现子组件中输入框v-model到父组件的双向绑定,我们需要使用computed属性来实现。可能有的同学想直接把文字绑定在道具里,这样就可以了?还是那句话,如果只是读取,可以绑定,但是修改的时候需要通过启动事件通知父组件更新数据(不能修改props里的值,只能读取!).所以在计算属性中,我们在集合中启动一个事件来更新父组件的数据。阅读时,我们只需要直接读取道具中的数值即可。

  

总结

  关于vue3组件中v-model的使用和解释的这篇文章到此为止。关于在vue3组件中使用v-model的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: