vue3中defineProps傳值使用ref響應(yīng)式失效詳解
子組件接收父組件的傳參。
父組件:
<template>
<Son :data="data"/>
</template>
<script setup>
import { ref } from "vue";
let data = ref('hello')
setTimeout(() => {
data.value = 'how are you doing'
}, 2000)
</script>
子組件:
<template>
<div>{{ msg }}</div>
</template>
<script setup>
import { ref } from "vue";
// 接受來自父組件的傳參
const props = defineProps({
data: String,
});
const msg = ref(props.data);
</script>
此時父組件改變 data 的值,子組件 msg 無法響應(yīng) data 的變化。
因為 ref 是對傳入數(shù)據(jù)的拷貝,原始值 data 的改變并不影響 msg
但 toRef 是對傳入數(shù)據(jù)的引用,原始值 data 改變會影響 msg
正確做法:
<template>
<div>{{ msg }}</div>
<div>{{ data }}</div>
</template>
<script setup>
import { ref, toRefs, toRef } from "vue";
// 接受來自父組件的傳參
const props = defineProps({
data: String,
});
// 方法1:
const msg = toRef(props, 'data');
// 方法2:
const { data } = toRefs(props);
</script>
官網(wǎng)說明

總結(jié)
到此這篇關(guān)于vue3中defineProps傳值使用ref響應(yīng)式失效的文章就介紹到這了,更多相關(guān)vue3使用ref響應(yīng)式失效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue將秒數(shù)轉(zhuǎn)成"時分秒"格式實例代碼
在項目中,請求后臺接口返回的值是秒,這篇文章主要給大家介紹了關(guān)于vue將秒數(shù)轉(zhuǎn)成"時分秒"格式的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
vue任意關(guān)系組件通信與跨組件監(jiān)聽狀態(tài)vue-communication
這篇文章主要介紹了vue任意關(guān)系組件通信與跨組件監(jiān)聽狀態(tài)vue-communication,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
vue完美實現(xiàn)el-table列寬自適應(yīng)
這篇文章主要介紹了vue完美實現(xiàn)el-table列寬自適應(yīng),對vue感興趣的同學(xué),可以參考下2021-05-05

