VuReact 1.7.0:终于不用再被 scoped 样式坑了

0 阅读4分钟

📢 写在前面

距离上一个版本 v1.6.0 发布仅过去两周,今天正式发布 v1.7.0 版本!本次更新聚焦于 CSS 作用域样式 的全面增强,同时修复了大量影响编译质量的痛点问题,让 Vue → React 的转换更稳定、更可靠。

✨ 亮点一:三大样式选择器穿透支持

在 Vue SFC 的 scoped 样式中,:deep():slotted():global() 是开发者最常用的三个穿透选择器。v1.7.0 之前,这些选择器的转换支持不够完善,导致部分样式场景无法正常迁移。

本次版本一次性补齐这三块拼图:

选择器作用转换支持
:deep()样式穿透至子组件✅ 覆盖多参数、嵌套等复杂场景
:slotted()样式精确作用于插槽内容✅ 作用域精确绑定
:global()在 scoped 样式中声明全局规则✅ 完整转换支持

🔧 场景示例

<style scoped>
/* 深度穿透:修改子组件内部样式 */
:deep(.el-button) {
  background: red;
}

/* 插槽样式:仅对插槽内容生效 */
:slotted(.highlight) {
  color: orange;
}

/* 全局样式:混用 scoped 和 global */
:global(.container) {
  max-width: 1200px;
}
</style>

这些选择器的完整支持,意味着再复杂的样式方案也能平滑迁移到 React 生态

✨ 亮点二:CSS 选择器解析引擎重构

光加功能还不够,我们还对底层的 CSS 选择器解析算法 进行了全面优化:

  • 🎯 增强复杂 CSS 选择器场景的兼容性——多层级嵌套、伪类组合、属性选择器等场景处理更准确
  • 🧩 scoped 样式处理模块化重构——拆分为多个子模块,代码可维护性大幅提升,为后续功能扩展打下基础
  • 🐛 修复 data-css-* 属性覆盖不全——确保 scope ID 正确应用到所有组件 DOM 元素
  • 🐛 修复 hash 错误作用于伪类/伪元素——避免样式因错误添加 hash 属性而失效

简单说:改完后的样式转换,更准、更稳、更易扩展

🐞 修复问题一览

除了样式相关的大改动,本次还修复了多个影响编译质量的关键 bug:

编译器核心

  • 🔧 v-on 事件处理函数识别与转换有误——对需额外包裹函数块的逻辑修复,事件绑定更准确
  • 🔧 组件 props 未作为 Hook 依赖项收集——修复后组件在依赖变化时能正确重新渲染
  • 🔧 顶层变量 useMemo 优化后未导入 React Hook——自动补齐 useMemo 的 import 语句
  • 🔧 文件 ID 不存在时无默认值——兜底处理,避免空值引发异常

样式相关

  • ✅ scoped 样式 data-css-* 属性全面覆盖组件 DOM 元素
  • ✅ CSS hash 属性错误作用于伪类/伪元素/属性选择器导致样式失效

🚀 优化改进

  • 依赖分析器模块重构:拆分为多个子模块,代码组织更清晰,后续维护成本和入门门槛双降低
  • emit 动态事件名优化:当传入的事件名为动态表达式时,自动转换为使用计算属性访问,并输出友好警告信息,提升产物可读性和运行时健壮性

📋 升级指南

直接更新到最新版本即可:

npm install @vureact/compiler@latest
# 或
yarn add @vureact/compiler@latest

本次更新完全向下兼容,无需修改现有配置或代码。

🗺️ 路线图回顾

回顾 v1.0.0 "心灵控制" 发布以来的迭代历程:

版本日期核心主题
v1.7.02026-04-26🎨 样式选择器全面增强 + 编译质量提升
v1.6.02026-04-13✨ useAttrs 转换 + TS 交叉类型
v1.5.02026-03-30📦 自定义 package.json + 多项修复
v1.4.02026-03-22🏗️ 重构内部编译架构 + SetupManager + 缓存优化
v1.3.02026-03-17🔔 版本更新检测 + 路由指南
v1.0.02026-03-03🚀 首个先行版发布

💬 写在最后

🌐 Github:github.com/vureact-js/…

📃 官方文档:vureact.top

📖 完整更新日志:CHANGELOG.md

VuReact 的初心一直没有变——让你用熟悉的 Vue 编写 React,同时让项目平滑迁移到 React 生态,降低迁移成本,保留开发体验

v1.7.0 在样式处理上又迈进了一大步,离"无痛迁移"的目标越来越近。如果你正在经历 Vue → React 的架构迁移、想用 Vue 写 React、想在一套代码库中同时使用两套生态的组件,不妨试试 VuReact!