umijs / umi

A framework in react community ✨
https://umijs.org
MIT License
15.39k stars 2.65k forks source link

[Bug] umi4集成antd5后, Static function can not consume context like dynamic theme. Please use 'App' component instead. #11515

Closed 18013516422 closed 1 year ago

18013516422 commented 1 year ago

What happens?

Mini Showcase Repository(REQUIRED)

Please provide a minimal reproduction then upload to your GitHub. 请提供 最小重现,并上传到你的 GitHub 仓库

How To Reproduce

Steps to reproduce the behavior: 1. 2.

Expected behavior 1. 2.

Context

github-actions[bot] commented 1 year ago

由于缺乏足够的信息,我们暂时关闭了该 Issue。请修改(不要回复) Issue 提供最小重现以重新开启。谢谢。

fz6m commented 1 year ago

需要给一个最小复现,umi 4 最简单的使用 antd 的方法是使用内置 umi antd 插件:

  pnpm i -D @umijs/plugins
// .umirc.ts

export default {
  plugins: ['@umijs/plugins/dist/antd'],
  antd: {}
}
wanglihuaya commented 1 year ago

是在 requestErrorConfig.ts 中 使用 message 就会 报这个错 https://ant.design/docs/blog/why-not-static-cn 参考这个在 umi 中要怎么修改呢

fz6m commented 1 year ago

没法在 request 里用,必须在组件里用。如果没有特别要求,不用在意这个提示。

xiaoxuehai commented 6 months ago

没法在 request 里用,必须在组件里用。如果没有特别要求,不用在意这个提示。

message/modal这些组件主题没办法正常生效啊 这个怎么处理呢大佬

fz6m commented 5 months ago

如果直接调用 message 等全局方法,他没有 react 的上下文信息,如果就是要全局使用,在应用里加一个 context ,里面用 App 或者 message.useMessage 的方法把渲染位置 placeholder 放到应用内(这样就可以获取到 react context 了),然后把封装好的方法存到全局去,比如 valtio 、 window 之类和 hooks 无关的地方。

参考 antd App 说明

如需使用 App ,配置需要确保打开如下配置:

// .umirc.ts

  antd: {
    configProvider: {},
    appConfig: {},
  }