What happens?
app.ts
使用 defineApp({})
声明了 getInitialState
config.ts
也声明了 initialState:{}
开启项目后, .umi/plugin-initialState/@@initialState.ts
没有初始化数据及设置方法,只剩
export default () => ({ loading: false, refresh: () => {} })
查了下源码,使用 es-module-lexer
解析出的 exports
是 default
,对应 api.appData.appJS.getInitialState
没有获取到,造成了 @@initialState.ts
没有数据
因为官网关于defineApp的介绍比较少,是在Beta阶段还是?
Mini Showcase Repository(REQUIRED)
一个初始化的antd-pro项目并将app.ts改为defineApp()方法,即可重现问题
Context
- Umi Version:4.0.24
- Node Version:16.18.0
- Platform:Windows 11
4条答案
按热度按时间6fe3ivhb1#
由于缺乏足够的信息,我们暂时关闭了该 Issue。请修改(不要回复) Issue 提供 最小重现 以重新开启。谢谢。
2nc8po8w2#
该问题可以拆解成以下 4 个子问题
defineApp
和 独立导出 一并使用时,只使用了defineApp
,独立导出不会生效。app.ts
与defineApp
有循环依赖关系,会导致defineApp
无法使用。getInitialState
的有无判断是通过es-module-lexer
实现的,但使用defineApp
时,无法识别到是否使用了getInitialState
。appJS.exports
,当使用defineApp
时,不会生效。目前 问题 1 和 2 在 #9708 可以解决。
jk9hmnmh3#
该问题可以拆解成以下 4 个子问题
defineApp
和 独立导出 一并使用时,只使用了defineApp
,独立导出不会生效。app.ts
与defineApp
有循环依赖关系,会导致defineApp
无法使用。getInitialState
的有无判断是通过es-module-lexer
实现的,但使用defineApp
时,无法识别到是否使用了getInitialState
。appJS.exports
,当使用defineApp
时,不会生效。目前 问题 1 和 2 在 #9708 可以解决。
问题3我尝试像获取config一样走了遍register,倒是拿到了里面的数据,不知道这样好不好
4urapxun4#
该问题目前的解决想法:在运行时进行校验,防止用户出现错误。