Comments (6)
示例代码,模拟用户输入带来的重新渲染,实际场景中存在需要用户填写大量数据的场景,用户反馈越填写页面越卡。实际上用户填写的内容并没有涉及到concent中相关的state或是effect等内容。使用示例代码可以发现页面刷新肉眼可见变慢,然后卡死抛出异常。去掉useConcent相关代码对比可以发现渲染没有变慢。concent版本2.4.0,2.4.4,2.4.18均可复现
const iState = () => ({ show: true, cool: 1, good: 2 });
function CcFnComp() {
const { state, syncBool } = useConcent({
module: "counter",
state: iState
});
const [value,setValue] = React.useState([{v:0,id:0},{v:0,id:1}])
const xxx = value[0].v;
React.useEffect(()=>{
setTimeout(()=>{
const newValue = [...value];
if(xxx.length>20){
newValue[0].v = 'reset'
}else{
newValue[0].v = xxx+"0";
}
setValue(newValue);
},10)
},[xxx])
return (
{xxx}
);
}
from helux.
你好,请给出具体的实例代码,或者在codesandbox创建一个实例并发送链接在issue,方便我跟踪和定位问题,或者分析你的代码本身可能有问题。
你的第二个答复里这段代码完全看不出什么问题, 第一个答复里明显是由死循环了。
from helux.
https://codesandbox.io/s/determined-johnson-7htdt?file=/src/App.js
from helux.
你好,请给出具体的实例代码,或者在codesandbox创建一个实例并发送链接在issue,方便我跟踪和定位问题,或者分析你的代码本身可能有问题。
你的第二个答复里这段代码完全看不出什么问题, 第一个答复里明显是由死循环了。
https://codesandbox.io/s/determined-johnson-7htdt?file=/src/App.js
循环只是为了模拟用户输入导致的重新渲染,改成input输入上百字符一样会出问题。
from helux.
2.4.19
已修复,通过对比实例记录的模块版本号和store记录的模块版本号,来避免冗余的merge mstate操作,从而杜绝频发的ob state set操作导致的 Maximum call stack size exceeded
见在线示例
https://codesandbox.io/s/happy-bird-rc1t7?file=/src/App.js
from helux.
最后推荐如果使用了cocnent,可以用 ctx.effect
替代原始的生命周期函数
from helux.
Related Issues (20)
- [RFC] 提供启用/禁用派出计算的API` enableMutates(true/false)` HOT 4
- TypeError: Cannot destructure property 'STATE_SHARED_KEY_MAP' of 't' as it is undefined. HOT 1
- [BUG] 对share对象的一部分进行 useAtom 访问时,出现意外行为 HOT 2
- [Feature] lifecycle HOT 2
- [Optimize] merge triggered non-first-level watch if they have same fnKey HOT 1
- derive 提示用户依赖需提前声明,否则会照成依赖丢失 HOT 2
- derive 派生函数如何捕获状态中可选链的依赖问题(How does the derived function capture the dependency problem of optional chaining in the state?) HOT 1
- [FEATURE] 开发一个跟踪调试插件 HOT 1
- 是否能提供 Perf Benchmark 测试报告? HOT 1
- [❤️ Sponsor] 小小鼓励,给予开发者更多动力
- [Feature] useLocalAtom
- [RoadMap] helux-2024 roadmap
- [FEATURE] 为`runMutateTask`提供入参`extraArgs`来传递给`mutate`的`task` HOT 1
- 无法控制布尔Boolean的展示 HOT 1
- [question] stopArrDep 具体行为 HOT 2
- sharex文档页访问404
- share 通过ctx调用setState 操作数组新增删除操作数组数据依赖收集无效 HOT 3
- 是否可以添加销毁mutate功能 HOT 3
- [RFC] 为响应式对象更新引入严格模式 HOT 4
- [提示] 关于死循环检测 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from helux.