Vue2.x中修改父组件数据的.sync替换为Vue3.x的@update
官方地址
2.x语法
父组件
<ChildComponent :title="pageTitle" @change="pageTitle = $event" />
<ChildComponent :title.sync="pageTitle" />
export default {
data() {
return {
pageTitle: 'pageTitle'
}
}
}
子组件 通过this.$emit('update:title') 修改父组件的数据
export default {
props: {
title: {
type: String
}
},
methods: {
changeCLick() {
this.$emit('update:title', newValue)
}
}
}
3.x语法
父组件 主要是使用@update 进行数据修改
<ChildComponent :title="pageTitle" @update:title="pageTitle = $event" />
<script lang="ts" setup>
import { ref } from 'vue'
import ChildComponent from './components/ChildComponent.vue'
const pageTitle = ref<string>()
</script>
子组件 通过defineEmits 修改父组件的数据
<script lang="ts" setup>
defineProps<{title: string}>()
const emit = defineEmits<{
(e: 'update:title', value: string): void
}>()
const changeTitle = () => emit('update:title', 'childTitle')
</script>
|