betasu / big-react Goto Github PK
View Code? Open in Web Editor NEW跟着我,从0实现React18
Home Page: https://qux.xet.tech/s/2wiFh1
跟着我,从0实现React18
Home Page: https://qux.xet.tech/s/2wiFh1
不然每次更新都是整个应用的重新渲染有些不合理呀,想知道下react到底什么情况下可以跳过render,感谢大佬!!!
function updateState(): [State, Dispatch] {
// ...
let baseQueue = current.baseQueue;
// ...
}
let baseQueue = current.baseQueue;
应该改成
let baseQueue =hook.baseQueue;
Hey, stumbled upon this repo.
This looks fantastic, as I went through the website a bit with a translator.
I think, lots of people would benefit from learning all of these concepts.
Is there English version planned for this?
Went through some of the forks -- could not find one.
如题,是不是应该先介绍下整体架构和思路,让大家有个了解
如题,reconciler模块架构思路应该介绍下,要不然懂的人懒得看,不懂的人一头雾水,比如我
https://github.com/BetaSu/big-react/blob/master/packages/react-reconciler/src/updateQueue.ts
大佬这个文件中processUpdateQueue
目前计算时, basicStateReducer(baseState, action) 感觉地方不应该用baseState而是我们计算出的新的newState
请可以运行这个例子,https://codesandbox.io/s/relaxed-ace-m9x292?file=/App.js 点击后组件的destory执行顺序为
。
而在本项目中执行顺序与官方实现不一致,下图为本项目中的打印顺序为
官方实现在没有标记的ChildDeletion的组件会先执行 commitPassiveUnmountEffects_complete(), 从而执行destory方法。并不是像我们实现的直接先执行所有要删除组件的destory。
https://github.com/BetaSu/big-react/blob/master/packages/react-reconciler/src/updateQueue.ts文件下,测试的组件就为批处理那节所写的组件,num初始值为100,click事件里有三个setNum,传入一个函数,返回num+1。在我测试的时候结果是101,按理来说是103,查看了一下processUpdateQueue,发现每次传进来的baseState都为100,应该在每次处理完update后将newState赋值给baseState,供下一个update的使用,这样结果就是103。请大佬指点一下,是我理解错了还是应该是这样的。
当前项目应该是17版本之前的实现方式
17版本之后是 合成事件捕获 =》 原生事件捕获 =〉 原生事件冒泡 =》 合成事件冒泡。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.