国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue父子組件之間雙向數(shù)據(jù)綁定的(vue2/vue3)

這篇具有很好參考價值的文章主要介紹了vue父子組件之間雙向數(shù)據(jù)綁定的(vue2/vue3)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

vue父子組件之間雙向數(shù)據(jù)綁定的四種方法(vue2/vue3)

vue考慮到組件的可維護性,是不允許子組件改變父組件傳的props值的。父組件通過綁定屬性的方式向子組件傳值,而在子組件中可以通過$emit向父組件通信(第一種方式),通過這種間接的方式改變父組件的data,從而實現(xiàn)子組件改變props的值。

第一種(原始,比較麻煩)
//父組件
<template>
    <div>
        <child :value='value' @getChildData='getChildData'></child>
         來自子組件的數(shù)據(jù):<span>{{value}}</span>
    <div/>
</template>
<script>
data() {
      return {
        value: '父組件的數(shù)據(jù)'
      }
    },
methods:{
    getChildData(v){
        this.value = v
    }
}
</script>


//子組件child
<template>
    <input v-model='value' @input='childInputChange'></input>
</template>
<script>
export default{
props:{
    value:{
        type:String,//在props接受父組件傳遞數(shù)據(jù)
        default:''
    }
},
watch:{
    value(){
        this.childValue = this.value //監(jiān)聽父組件的數(shù)據(jù),同步更新子組件數(shù)據(jù)
    }
   },
methods:{
    childInputChange(){
        this.$emit('getChildData',this.childValue) // 通過emit觸發(fā)getChildData,將子組件數(shù)據(jù)傳遞給父組件
    }
}

</script>
第二種 (自定義組件的 v-model 2.2.0+ 新增)
<input v-model="searchText">
等價于:
<input
  v-bind:value="searchText"
  v-on:input="searchText = $event.target.value"
>

當用在組件上時,v-model 則會這樣

<custom-input
  v-bind:value="searchText"
  v-on:input="searchText = $event"
></custom-input>

//1、將其 value attribute 綁定到一個名叫 value 的 prop 上
//2、子組件通過自定義的 input 事件拋出
Vue.component('custom-input', {
  props: ['value'],
  template: `
    <input
      v-bind:value="value"
      v-on:input="$emit('input', $event.target.value)"
    >
  `
})
第三種(.sync 2.3.0+ 新增)
//父組件
<template>
    <TestCom :num.sync="data"></TestCom>
</template>
<script>
export default({
  components: {
    TestCom,
  },
  data() {
    return {
      data:2
    }  
  },
});
</script>


//子組件
<template>
  <div>
    <button @click="cahngeNum">按鈕</button>
    {{ num }}
  </div>
</template>

<script>
export default({
  props: {
    num: {
      default: "",
      type: String,
    },
  },
  methods: {
    cahngeNum() {
      this.$emit("update:num", 999); // 觸發(fā)update:data將子組件值傳遞給父組件
    },
  },
});
</script>

第四種 (vue3)

  • vue3取消了.sync這種語法,使用v-model 語法代替。
  • 默認情況下,v-model 在組件上都是使用 modelValue 作為 prop,并以 update:modelValue 作為對應的事件。
  • 我們可以通過給 v-model 指定一個參數(shù)來更改這些名字
  • vue3允許寫多個v-model
// 父組件
<template>
    <div>
        // 父組件傳遞給子組件num屬性(默認使用modelValue)
        <child v-model:num = data></child>
    </div>
</template>
<script>
    data(){
      return {
        data:'我是來自父組件的數(shù)據(jù)'
      }
    }
</script>


//子組件
<template>
  <div>
    <button @click="cahngeNum">按鈕</button>
    {{ num }}
  </div>
</template>

<script lang="ts">
import { defineComponent } from "vue";
export default defineComponent({
  emits: ["update:num"],
  props: {
    num: {
      default: "",
      type: String,
    },
  },
  setup(props, { emit }) {
    function cahngeNum() {
      emit("update:num", 999); 
    }
    return { cahngeNum };
  },
});
</script>

ve3多個 v-model 綁定文章來源地址http://www.zghlxwxcb.cn/news/detail-482717.html

//父組件
<UserName
  v-model:first-name="first"
  v-model:last-name="last"
/>


//子組件
<script setup>
defineProps({
  firstName: String,
  lastName: String
})

defineEmits(['update:firstName', 'update:lastName'])
</script>

<template>
  <input
    type="text"
    :value="firstName"
    @input="$emit('update:firstName', $event.target.value)"
  />
  <input
    type="text"
    :value="lastName"
    @input="$emit('update:lastName', $event.target.value)"
  />
</template>

到了這里,關(guān)于vue父子組件之間雙向數(shù)據(jù)綁定的(vue2/vue3)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 在vue2使用v-model對組件進行雙向綁定

    v-model=“visible” 等價于 :value=“visible” 加上 @input=“visible = $event” 所以 v-model 就是父組件向子組件傳了個 value 字段的值,子組件使用 props 定義 value 字段, 就可以在子組件使用 value 讀取這個值;子組件使用 $emit(‘input’,值) 就可以改變 v-model 的值 父組件 子組件 父組件 子

    2024年02月10日
    瀏覽(16)
  • 組件封裝v-model .sync在父子組件中實現(xiàn)雙向數(shù)據(jù)綁定 如何處理單向數(shù)據(jù)流 封裝表單組件

    組件封裝v-model .sync在父子組件中實現(xiàn)雙向數(shù)據(jù)綁定 如何處理單向數(shù)據(jù)流 封裝表單組件

    使用watch監(jiān)聽 父組件使用.sync進行數(shù)據(jù)的綁定 傳值子組件時 把值賦值到data的變量中 然后監(jiān)聽該數(shù)據(jù)的變化 $emit拋出 父組件demo 子組件 展示效果 使用綁定對象的方式打破單向數(shù)據(jù)流實現(xiàn) 父組件 子組件 參考vue官方及各插件庫的方案 使用計算屬性來保證雙向數(shù)據(jù)流 通過計算屬

    2023年04月19日
    瀏覽(26)
  • vue3-setup語法糖 - 父子組件之間的傳值

    vue3-setup語法糖 - 父子組件之間的傳值

    近期學習 vue3 的父子組件之間的傳值,發(fā)現(xiàn)跟vue2的并沒有太大的區(qū)別,然后發(fā)現(xiàn)網(wǎng)絡上很少基于setup語法糖的教程,我這邊總結(jié)一下,希望對大家有所幫助。 父組件向子組件傳值的時候,子組件是通過props來接收的,然后以變量的形式將props傳遞到setup語法糖果中使用(defin

    2024年02月11日
    瀏覽(26)
  • vue2雙向數(shù)據(jù)綁定基本原理

    vue2雙向數(shù)據(jù)綁定基本原理

    vue2的雙向數(shù)據(jù)綁定(又稱響應式)原理,是通過數(shù)據(jù)劫持結(jié)合發(fā)布訂閱模式的方式來實現(xiàn)的,通過 Object.defineProperty() 來劫持各個屬性的 setter , getter ,在數(shù)據(jù)變動時發(fā)布消息給訂閱者,觸發(fā)相應的監(jiān)聽回調(diào)來渲染視圖。也就是說數(shù)據(jù)和視圖同步,數(shù)據(jù)發(fā)生變化,視圖跟著變化

    2023年04月10日
    瀏覽(28)
  • vue2和vue3 子組件父組件之間的傳值方法

    在組件化開發(fā)的過程中難免會遇見 子組件和父組件之間的通訊那么這里講關(guān)于vue2和vue3不同的通訊方式 先看一下vue2 父組件向子組件傳遞參數(shù) 父組件通過 : 語法 其實就是v-bind 來傳遞參數(shù) 子組件通過 props 來獲取父組件傳遞的方法 億點小知識:子組件接收到數(shù)據(jù)之后,不能直接

    2024年02月09日
    瀏覽(22)
  • 【vue2第十一章】v-model的原理詳解 與 如何使用v-model對父子組件的value綁定 和修飾符.sync

    【vue2第十一章】v-model的原理詳解 與 如何使用v-model對父子組件的value綁定 和修飾符.sync

    v-model的原理詳解 v-model的本質(zhì)就是一個語法糖,實際上就是 :value=\\\"msg\\\" 與 @input=\\\"msg = $event.target.value\\\" 的簡寫。 :value=\\\"msg\\\" 從數(shù)據(jù)單向綁定到input框,當data數(shù)據(jù)中的msg內(nèi)容一旦改變,而input框數(shù)據(jù)也隨之改變。 @input=\\\"msg = $event.target.value\\\" 是為input框綁定了input事件,內(nèi)容改變則觸發(fā)

    2024年02月10日
    瀏覽(20)
  • 【Vue3 知識第四講】數(shù)據(jù)雙向綁定、事件綁定、事件修飾符詳解

    【Vue3 知識第四講】數(shù)據(jù)雙向綁定、事件綁定、事件修飾符詳解

    什么是數(shù)據(jù)雙向綁定? 當數(shù)據(jù)發(fā)生變化的時候,視圖會相應的發(fā)生變化 當視圖發(fā)生改變的時候,數(shù)據(jù)也會相應的同步變化 數(shù)字化管理平臺 Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus 權(quán)限系統(tǒng)-商城 個人博客地址 雙向綁定的指令 ? v-model 指令實現(xiàn)數(shù)據(jù)雙向綁定 雙向綁定使用場景 ?

    2024年02月09日
    瀏覽(18)
  • 【Vue3】2-10 : 表單處理與雙向數(shù)據(jù)綁定原理

    【Vue3】2-10 : 表單處理與雙向數(shù)據(jù)綁定原理

    一、表單處理 1.1、【雙向綁定】實現(xiàn)方式一:v-model >??代碼? >? 效果? 1.2、【雙向綁定】實現(xiàn)方式二::value屬性 + input事件 >??代碼? >? 效果?(同上) 二、實戰(zhàn) 2.1 【v-model 示例】輸入框? >??代碼 +?效果 (見1.1) 2.2 【v-model 示例】單選框? >??代碼? >? 效果 2

    2024年01月20日
    瀏覽(29)
  • vue3探索——組件通信之v-model父子組件數(shù)據(jù)同步

    再很多場景中,我們可能想在子組件中修改父組件的數(shù)據(jù),但事實上,vue不推薦我們這么做,因為數(shù)據(jù)的修改不容易溯源。 在vue2中,我們使用 .sync 修飾符+自定義事件 \\\'update:xxx\\\' ,來使父子組件數(shù)據(jù)同步。 這里不作過多說明,有需要請自行了解。 vue3的寫法與vue2基本一致。最

    2024年02月11日
    瀏覽(21)
  • vue全家桶進階之路31:Vue3 數(shù)據(jù)和方法的雙向綁定ref、reactive、toRefs

    ref 在 Vue 3 中,你可以使用 setup 函數(shù)來定義組件的數(shù)據(jù)和方法。在 setup 函數(shù)中,你可以使用 ref 、 reactive 和 computed 等 Vue 3 的響應式 API 來定義數(shù)據(jù),并返回一個包含你需要公開的數(shù)據(jù)和方法的對象。下面是一個例子: 在這個例子中,我們使用 ref 函數(shù)來定義了一個名為 mes

    2023年04月19日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包