remaxjs / remax

使用真正的 React 构建跨平台小程序
https://remaxjs.github.io/remax/
MIT License
4.57k stars 364 forks source link

[BUG]在钉钉小程序运行mini-antui组件,会导致页面组件无限重复渲染 #316

Closed h1bomb closed 4 years ago

h1bomb commented 4 years ago

bug 描述 在钉钉小程序运行mini-antui组件,会导致页面组件无限重复渲染

复现步骤

import * as React from 'react';
import List from 'mini-antui/es/list';

export default () => {
  return <List>dasdasd</List>;
};

使用以上代码编写一个页面 导致页面重复渲染

期望结果 正常加载

版本信息:

其他信息 关于mini-antui的组件在钉钉上重复渲染的问题,我简单跟了下,如:mini-antui/es/list 在 组件里didMount方法,如果有 setData的调用就会导致这个问题

image

Pochodaydayup commented 4 years ago

有点奇怪,我试了其他支付宝小程序不会出现问题,就钉钉会出现问题,@yesmeck 你知道为啥么

Darmody commented 4 years ago

从调试的结果来看,钉钉 component 内的 setData 行为会导致 page 内的上一次 setData 重复执行一次。所以第一次页面 splice 行为被重复执行,每执行一次页面插入,就会有一个新的 component 被渲染出来,紧接着 component 内的 setData 就又被触发,如此往复。。。