FitCloud
136M · 2026-04-15
VuReact 是一个能将 Vue 3 代码编译为标准、可维护 React 代码的编译工具,并非运行时混合框架。今天我们直接看核心:Vue 高频使用的 ref() / shallowRef(),经过 VuReact 编译后会对应 React 的哪些代码?
ref、shallowRef 的用法与行为ref 是 Vue 3 最基础的响应式 API,在 VuReact 中会被直接编译为 React Hook。
Vue 输入
<script setup>
import { ref } from 'vue';
const count = ref(0);
</script>
VuReact 输出(React)
import { useVRef } from '@vureact/runtime-core';
const count = useVRef(0);
ref 会被编译成 useVRef,它是 Vue ref 在 React 里的语义完全对齐的适配 API,保留 .value 访问与响应式更新行为。
Vue 输入(TS)
<script lang="ts" setup>
const title = ref<string>('');
const isLoading = ref<boolean>(false);
const userList = ref<Array<{ id: number; name: string }>>([]);
const config = ref<Record<string, any>>({ theme: 'dark' });
</script>
VuReact 输出(TS)
const title = useVRef<string>('');
const isLoading = useVRef<boolean>(false);
const userList = useVRef<Array<{ id: number; name: string }>>([]);
const config = useVRef<Record<string, any>>({ theme: 'dark' });
TS 泛型、类型注解完整保留,React 侧类型提示完全可用。
shallowRef 是浅层响应式 API,只顶层引用变化,适合大对象性能优化。
Vue 输入
<script setup>
import { shallowRef } from 'vue';
const count = shallowRef({ a: { b: 1, c: { d: 2 } } });
</script>
VuReact 输出(React)
import { useShallowVRef } from '@vureact/runtime-core';
const count = useShallowVRef({ a: { b: 1, c: { d: 2 } } });
useShallowVRef 完全对齐 shallowRef 行为:
.value → 触发更新