umijs / umi

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

[Feature Request] @@/core/history 增加对 basename 的导出 #12540

Closed purple-force closed 4 days ago

purple-force commented 5 days ago

Background

在写一个通用的响应拦截器插件,在登录失效情况下,原先是用 history.push 到本工程内的 '/login' 路由页面。现在需要新打开独立的登录页,在存在路由前缀(.umirc.ts 中配置 base)、微前端子应用等场景下,没有 basename,无法拼接完整的跳转链接

Proposal

export { history }; 这里增加 basename 的导出。这样在自定义插件中即可通过 import { basename } from '@@/core/history' 获取 basename

Additional context

Add any other context or screenshots about the feature request here.

fz6m commented 4 days ago

需要配置文件配置的 base 值的话,比较好的方式是在配置文件里把这个值用 define 注入,之后项目里通过 process.env.XXX 使用。

purple-force commented 2 days ago

需要配置文件配置的 base 值的话,比较好的方式是在配置文件里把这个值用 define 注入,之后项目里通过 process.env.XXX 使用。

子应用场景下呢?需要用 父应用 base + 子应用前缀,规则可能有很多,而从 history 里导出则比较直接。

fz6m commented 7 hours ago

子应用需要用的话,在 qiankun 生命周期里,或者 useModel 的父子数据流里,或者全局变量上,把父应用的 basename 公开出去给子应用使用。

或者在如下位置获取:

// src/app.ts

export const modifyClientRenderOpts = (opts: any) => {
  console.log('opts: ', opts);
  return opts
}