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

父組件代碼
<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">點我改變ref的值</button>
<button @click="changeReactiveVal">點我改變reactive的值</button>
<button @click="changeReactiveArr">點我改變reactive的數(shù)組</button>
</template>
<script>
export default {
name: "little",
props: ["refNum", "reactiveNum", "reactiveArr"],
setup (props, context) {
// 改變 ref 的值
const changeRefVal = () => {
props.refNum++ // 報警告,不生效
}
// 改變 reactive 里面的值
const changeReactiveVal = () => {
props.reactiveNum++ // 報警告,不生效
}
// 改變 reactive 里面的數(shù)組
const changeReactiveArr = () => {
// props.reactiveArr = [1, 2, 3, 4] // 報警告,不生效
props.reactiveArr.push(4) // 生效
}
return {
changeRefVal,
changeReactiveVal,
changeReactiveArr
}
},
}
</script>
<style>
</style>總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
在Vue-cli里應(yīng)用Vuex的state和mutations方法
今天小編就為大家分享一篇在Vue-cli里應(yīng)用Vuex的state和mutations方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
Vue-Cli配置代理轉(zhuǎn)發(fā)解決跨域問題的方法
本文主要介紹了Vue-Cli配置代理轉(zhuǎn)發(fā)解決跨域問題的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
vue elementui簡易側(cè)拉欄的使用小結(jié)
這篇文章主要介紹了vue elementui簡易側(cè)拉欄的使用,增加了側(cè)拉欄,目的是可以選擇多條數(shù)據(jù)展示數(shù)據(jù),本文通過示例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-06-06
解決vue-cli webpack打包開啟Gzip 報錯問題
這篇文章主要介紹了vue-cli webpack打包開啟Gzip 報錯問題的解決方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07
vue深入解析之render function code詳解
vue對大家來說應(yīng)該再熟悉不過了,下面這篇文章主要給大家深入的解析了vue之render function code的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-07-07

