Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

umi@4已发布,请问会兼容吗? #63

Open
adindefinite opened this issue Jun 23, 2022 · 10 comments
Open

umi@4已发布,请问会兼容吗? #63

adindefinite opened this issue Jun 23, 2022 · 10 comments

Comments

@adindefinite
Copy link

adindefinite commented Jun 23, 2022

[email protected] 已发布 -> https://github.com/umijs/umi-next
当前最新版本的umi-plugin-keep-alive不兼容,useAliveController等方法无法从umi中直接导出

@adindefinite adindefinite changed the title umi@4已发布,请问会支持最新版umi umi@4已发布,请问会兼容吗? Jun 23, 2022
@CJY0208
Copy link
Member

CJY0208 commented Jun 23, 2022

会兼容,目前只有这一个问题吗? keep alive 功能是否正常呢

@adindefinite
Copy link
Author

image
升级umi@4后
umi-plugin-keep-alive相关代码未做任何改动前
如上图 会报错提示把组件包裹在AliveScope内,按提示修改后keep-alive功能无法正常使用,组件内表单数据未做缓存,回退umi版本至3.5.26 所有功能正常使用
另外,顺便问下,大概什么时候可以支持[email protected],万分感谢!

@yuantongkang
Copy link

image
我在升级的时候是遇到这个问题

@CJY0208
Copy link
Member

CJY0208 commented Jun 27, 2022

@yuantongkang PR 合并了,发了 beta.33 可以试试,感谢~

@shenjunru
Copy link

欢迎试用 react-fiber-keep-alive,一个基于 react fiber 的 keep-alive 实现

@1769762790
Copy link

0.0.1-beta.34 在umi4中还是使用不了,报错信息同上

@CJY0208
Copy link
Member

CJY0208 commented Aug 30, 2022

@1769762790 需要自检下 node_modules 里的版本是否确实已经升级到 beta.34,看了代码应该不会有这个报错的

@Hfimy
Copy link

Hfimy commented Aug 31, 2022

目前看插件实现是加在rootContainer这一层,在路由之外,这个是否存在潜在问题? 与使用addLayout加在router之内的区别是? @CJY0208

@xiaoyierle
Copy link

xiaoyierle commented Oct 9, 2023

import { useAliveController } from '@umijs/max'
请问目前的最新版可以通过 @umijs/max 中引入useAliveController方法吗? 我目前用的"@umijs/max": "^4.0.83", 还是报找不到
image
@CJY0208

@Bob1270
Copy link

Bob1270 commented Nov 14, 2023

可以参考这个例子:
1.安装umi-plugin-keep-alive插件和react-activation插件(我在这里用的是pnpm add,用npm install也都可以):

pnpm add umi-plugin-keep-alive --save;

pnpm add react-activation;
2.需要在.umirc.ts文件中手动配置开启插件:

plugins: ['umi-plugin-keep-alive'],
注:这个插件名字像上面这样写才生效,起初把这个插件名字写错成了:“@umijs/max-plugin-keep-alive”,是无法使用的。

3.遇到问题:但是只要在使用了useModel的页面,再使用KeepAlive,都会报错:Uncaught TypeError: Cannot read properties of null (reading 'dispatcher')(没有使用useModel的页面,没有报错)。后来在gitHub查到还需要添加一个配置:

src/app.ts中添加如下配置:

import { autoFixContext } from 'react-activation';
import jsxDevRuntime from 'react/jsx-dev-runtime';
import jsxRuntime from 'react/jsx-runtime';

autoFixContext(
[jsxRuntime, 'jsx', 'jsxs', 'jsxDEV'],
[jsxDevRuntime, 'jsx', 'jsxs', 'jsxDEV'],
);
4.然后在组件中使用就不会报错啦:

import { KeepAlive } from '@umijs/max';
export default () => {
return (
<>
<KeepAlive
name="home"
when={() => {
/根据路由的前进和后退状态去判断页面是否需要缓存,前进时缓存,后退时不缓存(卸载)。 when中的代码是在页面离开(卸载)时触发的。/
return history.action !== 'POP';
}}
>


</>
);
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants