vue3父子組件傳值?雙向綁定及注意問題小結
attribute agruments
vue3父子組件傳值 雙向綁定 及注意事項
http://www.dbjr.com.cn/article/269785.htm 可以參考下
首先注意
父子組件傳值是單項數(shù)據(jù)流,vue3中子組件是不能直接修改父組件數(shù)據(jù)的,vue2中是可以直接使用sync的語法,直接進行修改的而sync修飾符的作用則是簡化事件聲明及監(jiān)聽的寫法。
注意事項:
// 父組件 // v-model 沒有指定參數(shù)名時,子組件默認參數(shù)名是modelValue <ChildComp v-model="search" />
(1)子組件也并不是直接拿 props 傳的變量直接用,而是需要聲明一個響應式變量 - 通過 ref(props.modelValue) 聲明基于 props 傳的變量值為初始化值的響應式數(shù)據(jù)。
(2)且如果父組件傳的是異步數(shù)據(jù)的話,還需要對其進行監(jiān)聽。
(3)當子組件數(shù)據(jù)改變時需要通過 emit('update:modelValue', e) 去修改父組件數(shù)據(jù)實現(xiàn)雙向綁定。
舉例子:單個數(shù)據(jù)綁定
<template> <div> <input v-model="sea" @input="valChange(sea)" /> </div> </template> <script lang="ts"> import { defineComponent, ref, watch } from 'vue' export default defineComponent({ name: 'ChildComp', props: { modelValue: { // 父組件 v-model 沒有指定參數(shù)名,則默認是 modelValue type: String, default: '' } }, setup (props, { emit }) { // input初始化 const sea = ref(props.modelValue) // 如果父組件傳過來的數(shù)據(jù)是異步獲取的,則需要進行監(jiān)聽 watch(() => props.modelValue, () => { sea.value = props.modelValue }) // 數(shù)據(jù)雙向綁定 function valChange (e: string) { emit('update:modelValue', e) } return { sea, valChange } } }) </script>
到這就是,在子組件中可以使用你定義ref來使用修改了,可以使用emit的方法回傳數(shù)據(jù),也可以直接在頁面上直接使用v-model來進行雙向數(shù)據(jù)綁定
到此這篇關于Vue3中如何通過v-model實現(xiàn)父子組件的雙向數(shù)據(jù)綁定及利用computed簡化父子組件雙向綁定的文章就介紹到這了,更多相關Vue3父子組件的雙向數(shù)據(jù)綁定內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springboot和vue前后端交互的實現(xiàn)示例
本文主要介紹了springboot和vue前后端交互的實現(xiàn)示例,將包括一個簡單的Vue.js前端應用程序,用于發(fā)送GET請求到一個Spring Boot后端應用程序,以獲取并顯示用戶列表,感興趣的可以了解一下2024-05-05