解决@ant-design/icons导致的样式异常

在使用antd+tailwind时 通常会使用layer模式

js 复制代码
    <StyleProvider layer>
      <ConfigProvider locale={zhCN}>
        <App className='w-full h-full relative m-0 p-0'>
          {useRoutes(router)}
        </App>
      </ConfigProvider>
    </StyleProvider>
css 复制代码
@layer theme, base, antd, components, utilities;
@import 'tailwindcss';

此时layer的顺序会非常重要 决定了样式的覆盖情况

但是某些情况下 icons会造成layer顺序异常

原因在于 一开始 icon组件没有接收到StyleProvider注入的layer 它会在<head>顶部插入样式

html 复制代码
<style data-rc-order="prepend" rc-util-key="@ant-design-icons">
.anticon{
xxx

一般情况下 如果有icon接受到layer 会注入@layer antd开头的样式 并插入<head>末尾 ;但是在已经存在head>style[rc-util-key="@ant-design-icons"]的情况下 会复用这个节点 只修改其内容

因此 这个style会被改为

html 复制代码
<style data-rc-order="prepend" rc-util-key="@ant-design-icons">
@layer antd {xxx

它是<head>的第一个元素 让@layer antd的定义比其他layer更早 使其优先级降低

解决方法

  • 使用@ant-design/icons^5 使其与antd版本匹配 参考文档
  • 不要 从antd导入message等函数式组件 而是使用App.useApp
  • 如果你的项目和我一样 在axios的拦截器里用了message 也没关系 可以这样做
js 复制代码
    <StyleProvider layer>
      <ConfigProvider locale={zhCN}>
        <App className='w-full h-full relative m-0 p-0'>
          {useRoutes(router)}
          <RightOutlined className='hidden' />
        </App>
      </ConfigProvider>
    </StyleProvider>

提前把可能引发错误的style节点固定在head末尾

相关推荐
早點睡39010 小时前
高级进阶 ReactNative for Harmony项目鸿蒙化三方库集成实战:react-native-image-picker(打开手机相册)
react native·react.js·harmonyos
早點睡39010 小时前
基础入门 React Native 鸿蒙跨平台开发:react-native-easy-toast三方库适配
react native·react.js·harmonyos
●VON20 小时前
React Native for OpenHarmony:2048 小游戏的开发与跨平台适配实践
javascript·学习·react native·react.js·von
光影少年21 小时前
react状态管理都有哪些及优缺点和应用场景
前端·react.js·前端框架
冻感糕人~1 天前
【珍藏必备】ReAct框架实战指南:从零开始构建AI智能体,让大模型学会思考与行动
java·前端·人工智能·react.js·大模型·就业·大模型学习
lbb 小魔仙1 天前
【HarmonyOS实战】React Native 鸿蒙版实战:Calendar 日历组件完全指南
react native·react.js·harmonyos
LYFlied1 天前
从 Vue 到 React,再到 React Native:资深前端开发者的平滑过渡指南
vue.js·react native·react.js
AAA阿giao1 天前
从零拆解一个 React + TypeScript 的 TodoList:模块化、数据流与工程实践
前端·react.js·ui·typescript·前端框架
摘星编程2 天前
React Native鸿蒙版:Image图片占位符
react native·react.js·harmonyos
飞羽殇情2 天前
基于React Native鸿蒙跨平台开发构建完整电商预售系统数据模型,完成参与预售、支付尾款、商品信息展示等
react native·react.js·华为·harmonyos