<script>
import { getCurrentInstance, ref, onMounted } from 'vue'
export default {
// -------------vue2-------------
data() {
return {
vue2Title: "this is vue2"
}
},
mounted() {
// 获取vue3的数据
console.log(this.vue3Count);
},
// -------------vue3-------------
setup() {
onMounted(() => {
const instance = getCurrentInstance()
// 获取vue2的数据
const vue2Title = ref(instance.proxy.$data.vue2Title)
console.log(vue2Title.value);
})
const vue3Count = ref(0)
const addCount = () => {
vue3Count.value++
}
return { count, add}
}
}
</script>
因为setup本质就是一个vue实例的生命周期函数,因此vue2获取直接通过this访问vue实例即可获取vue3定义的数据
vue3获取vue2则需要getCurrentInstance获取当前组件实例,从而获取vue2里的数据
如果script拆分开的话vue3获取vue2的数据还是一样的方法,但是vue2获取vue3的比较麻烦
可能需要定义公共状态实现共享(如store,全局global等),就不演示了
// vue3
<script setup>
import { getCurrentInstance, ref, onMounted } from 'vue'
const vue3Count = ref(0)
onMounted(() => {
const instance = getCurrentInstance()
// 获取vue2的数据
const vue2Title = ref(instance.proxy.$data.vue2Title)
console.log("vue3", vue2Title.value);
})
</script>
//vue2
<script>
export default {
data() {
return {
vue2Title: "this is vue2"
}
},
}
</script>
tips:接受批评,并期待好的解决方案,与君共勉