vue3子組件改變父組件的值(props)reactive和ref的區(qū)別及說明
更新時(shí)間:2025年05月06日 11:18:43 作者:Lysun001
這篇文章主要介紹了vue3子組件改變父組件的值(props)reactive和ref的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
vue3子組件改變父組件的值(props)reactive和ref區(qū)別
其實(shí)關(guān)于子組件改變父組件的值,直接改是不可以的,我們一般通過綁定事件來改變,但是如果是reactive里面的復(fù)雜數(shù)據(jù)類型,我們只要不改變其內(nèi)存地址,是可以改變復(fù)雜數(shù)據(jù)類型里面的值的
下面看相關(guān)代碼,父子組件的層級(jí)如圖

父組件代碼
<template>
<h1>ref定義的值{{refNum}}</h1>
<h1>reactive定義的值{{reactiveNum}}</h1>
<h1>reactive定義的數(shù)組{{reactiveArr}}</h1>
<little
:refNum="refNum"
:reactiveNum="reactiveNum"
:reactiveArr="reactiveArr"
></little>
</template>
<script>
import little from './little'
import { toRefs, reactive, ref } from 'vue'
export default {
name: "big",
components: { little },
setup () {
const refNum = ref(0)// 不能直接通過子組件改變
const reactiveObj = reactive({
reactiveNum: 0, // 不能直接通過子組件改變
reactiveArr: [1, 2, 3] // 不改變內(nèi)存地址,可以通過子組件之間改變里面的值
})
return {
refNum,
...toRefs(reactiveObj)
}
}
}
</script>
<style>
</style>子組件
<template>
<button @click="changeRefVal">點(diǎn)我改變r(jià)ef的值</button>
<button @click="changeReactiveVal">點(diǎn)我改變r(jià)eactive的值</button>
<button @click="changeReactiveArr">點(diǎn)我改變r(jià)eactive的數(shù)組</button>
</template>
<script>
export default {
name: "little",
props: ["refNum", "reactiveNum", "reactiveArr"],
setup (props, context) {
// 改變 ref 的值
const changeRefVal = () => {
props.refNum++ // 報(bào)警告,不生效
}
// 改變 reactive 里面的值
const changeReactiveVal = () => {
props.reactiveNum++ // 報(bào)警告,不生效
}
// 改變 reactive 里面的數(shù)組
const changeReactiveArr = () => {
// props.reactiveArr = [1, 2, 3, 4] // 報(bào)警告,不生效
props.reactiveArr.push(4) // 生效
}
return {
changeRefVal,
changeReactiveVal,
changeReactiveArr
}
},
}
</script>
<style>
</style>總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue Echarts渲染數(shù)據(jù)導(dǎo)致殘留臟數(shù)據(jù)的問題處理
這篇文章主要介紹了Vue Echarts渲染數(shù)據(jù)導(dǎo)致殘留臟數(shù)據(jù)的問題處理,文中通過代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-08-08
vue.js實(shí)現(xiàn)選項(xiàng)卡切換
這篇文章主要為大家詳細(xì)介紹了vue.js實(shí)現(xiàn)選項(xiàng)卡切換功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
vue3在router中使用store報(bào)錯(cuò)的完美解決方案
這篇文章主要介紹了vue3在router中使用store報(bào)錯(cuò)解決方案,就是需要在實(shí)例化一下,因?yàn)樵诰幾grouter的時(shí)候pinia還未被實(shí)例化,文中補(bǔ)充介紹了vue3中router和store詳細(xì)使用教程方法,感興趣的朋友一起看看吧2023-11-11

