Comments (105)
前端 真难
from blog.
@Mrzhangyu 感谢认可。谢谢
from blog.
啥时候能实现下react-redux
跪求哦
from blog.
这个写的真的很好,比网上看到很多redux的教程写的好
from blog.
大神的理解很透彻,通俗易懂,学习了。
from blog.
通过简述过程中把redux源码解析出来, 大神666
from blog.
android开发时,通常使用MVP分层已经足够用了。真心想不出来,请大神指教!
安卓开发的来添什么乱
from blog.
文章很不错,循序渐进,通俗易懂。
/* 实现 exception(time((logger(dispatch))))*/
chain.reverse().map(middleware => {
dispatch = middleware(dispatch);
});
从语义话看,这里我建议用forEach更好呢。
from blog.
redux可以一用在任何框架,与框架本身没有关系。那是不是vue的store也一样啊
from blog.
我可能需要先学一下redux运行原理再来看这个底层
from blog.
牛逼,真香
from blog.
优秀
export default function compose(...funcs) {
if (funcs.length === 1) {
return funcs[0]
}
return funcs.reduce((a, b) => (...args) => a(b(...args)))
}
数组是长度为1时候reduce默认就是第一个元素,这边判断是不是多余了
from blog.
from blog.
写的真好,看过的有关文章里最循序渐进通俗易懂的了
applyMiddleware那里把store抽出来返回函数,参数是action,有点依赖注入和惰性求值的味道,虽然不完全是纯函数
如果中间件那里加上异步处理的解析,比如外部的runSaga(watchers),那就更棒了
from blog.
看了这么多redux的教程,这个真的是很通俗易懂了,不过最后中间件的地方还得好好捋一捋,还是有点晕,感谢大神
from blog.
这个讲的通俗易懂,赞--
from blog.
@maojiebaibaibai 中间件那里,建议跟着写一遍。自己实现两个中间件就会了!
from blog.
厉害厉害,真的是用心了
from blog.
厉害,讲的很好,
from blog.
这个真心赞一个。
from blog.
点赞。
from blog.
解释的非常清晰就算初学者也能看懂 感谢作者
from blog.
为什么你这么厉害,真的通俗易懂唉
from blog.
这个是真的大神,实在佩服,十分感谢,希望继续出关于dva实战的文章
from blog.
666,是看过的关于redux最棒的教程
from blog.
真是太厉害了,终于明白了种种的种种
from blog.
多文件协作第三段代码
/注意:countReducer 接收的 state 是 state.info/
应该是InfoReducer 接收的state是 state.info
from blog.
赞👍
from blog.
非常棒,赞
from blog.
看的很透彻 感谢大神
from blog.
讲解的通俗易懂,点赞
from blog.
感谢
from blog.
送上我的膝盖
from blog.
牛逼 讲得很透彻
from blog.
功力得多么深厚,才能把这个讲的这么透彻啊
from blog.
果然是大神,这是我看的最清晰的redex叫教程了。感谢!!!!
from blog.
大神,虽然我还不会用react;但是已经了解redux了
from blog.
感谢分享,看到所有的为止最通俗易懂的一篇
from blog.
这个真厉害
from blog.
这个厉害了,透彻易懂
from blog.
感谢大神,讲的很好,向大神学习!
from blog.
大神啊,讲的很好,一遍看不懂,多看几遍就懂的多了
from blog.
这个是真的吊,太感谢大神了,值得点赞
from blog.
码,后面看
from blog.
太厉害了吧 感谢大神 发现自己要学的东西还有很多 大家一起加油吧~
from blog.
真的是好激动 找到这篇文章 太感谢作者了
from blog.
大神为什么for(i = 0; i<listeners.length; i++)中的listener是一个函数呢?为什么要listener();一下呢?这个不太理解,怎么实现的通知的...
from blog.
刚学习react时没有使用redux,因为觉得比较复杂、难懂。看了楼主的解说,通俗易懂。真心感谢楼主
from blog.
大神为什么for(i = 0; i<listeners.length; i++)中的listener是一个函数呢?为什么要listener();一下呢?这个不太理解,怎么实现的通知的...
因为listener是当做一个函数或者订阅事件传入到listeners数组中的,这个数组保存的不是数值,是所有的订阅者的订阅,也就是
console . log ( state . count );
}```
敲一遍代码,很多东西就能看懂了
from blog.
学习了
from blog.
大神为什么for(i = 0; i<listeners.length; i++)中的listener是一个函数呢?为什么要listener();一下呢?这个不太理解,怎么实现的通知的...
我来给他 修改一下 ,你就明白了
subscribe((fn) = () => {
console.log(fn);
console.log(state.count);
});
这个是调用这个方法 subscribe , 而且这个方法 接收一个 参数 ,只是这个参数是个方法 ( fn )
from blog.
真是好人,之前只是大概了解一下redux,现在明白好多了
from blog.
这也太秀了吧
from blog.
不错
from blog.
这个是我看过的最好的redux文章了,想请问一下,为什么redux不支持异步?
from blog.
厉害了,厉害了,特地登录上来赞一下
from blog.
通俗易通,忍不住给个赞
from blog.
牛逼!
from blog.
学习了~老哥,文章可否授权公众号【全栈前端精选】转载,注明出处和作者
from blog.
@Nealyang 可以的,注明出处即可。
from blog.
膜拜大佬,文章由浅入深,通俗易懂,不知道大佬有没有技术博客,很想看看
from blog.
大神厉害
from blog.
大神厉害,我没做过react项目,只是看了看官方文档,感觉redux有点复杂,看了大神的文章,感觉理解更透彻了
from blog.
👍👍👍,通俗易懂
from blog.
这个是我看过的最好的redux文章了,想请问一下,为什么redux不支持异步?
redux只是一个信息管理工具,在异步回调里面使用就好了
from blog.
虽然还不懂,先收藏,等react搞得差不多了再来研究。先膜拜下大佬!!
from blog.
关注了
from blog.
搞后端的就得网络调配+后端+前端都得会,我好难啊
from blog.
不会 redux 都看懂了,大神威武!!!
from blog.
文章很不错,循序渐进,通俗易懂。
/* 实现 exception(time((logger(dispatch))))*/ chain.reverse().map(middleware => { dispatch = middleware(dispatch); });从语义话看,这里我建议用forEach更好呢。
chain.reduce((a, b) => b(a), dispatch)
这样写可能更优雅,作者的本义可能是想跳过compose的实现
from blog.
大彻大悟
from blog.
大赞
from blog.
厉害
from blog.
Mark
from blog.
中间件那里有个问题,store为什么要单独作为一个参数传进去,为什么不一起和next传进去
from blog.
牛逼
from blog.
写的很棒,看着看着就笑了,内心戏好足的技术大佬吖~
from blog.
厉害,通俗易懂
from blog.
厉害啊大佬,真是透彻,希望多做一些这样的知识点解析,太有用了。
from blog.
请收下膝盖!!
from blog.
点个赞
from blog.
很通俗易懂,我先过一遍。项目完成之后,再跟着你这写一遍。谢谢分享~~真的很棒👍
from blog.
真是一种享受,要是多一些这样的文章该多好!
from blog.
之前学习过,现在来复习。写的真棒 👍
from blog.
优秀
export default function compose(...funcs) {
if (funcs.length === 1) {
return funcs[0]
}
return funcs.reduce((a, b) => (...args) => a(b(...args)))
}
数组是长度为1时候reduce默认就是第一个元素,这边判断是不是多余了
from blog.
perfect
from blog.
大佬 这个地方有点小错误,不过整篇文章还是很通俗易懂,加油!
这个没错,你自己运行下试试。state是当前的状态,state.name和state.description是旧的值,如果换成这两个那就相当于没修改了。action里才是要更新的新值,所以这里从action中取是没问题的~ 你再想想哈
from blog.
跟着写了一遍,很赞啊,很全面!
from blog.
讲得很好,跟着走了一遍,循序渐进的,很好理解
from blog.
文章很不错,循序渐进,通俗易懂。
/* 实现 exception(time((logger(dispatch))))*/ chain.reverse().map(middleware => { dispatch = middleware(dispatch); });从语义话看,这里我建议用forEach更好呢。
chain.reduce((a, b) => b(a), dispatch)这样写可能更优雅,作者的本义可能是想跳过compose的实现
我也认同reduce 更好(看到后边发现了),但map是没有必要的,forEach更合适,这里没有必要创建一个无用的新数组
from blog.
大佬讲得非常通透易懂哇!不过总结那里有一句话“dispatch( action ) 触发 action,生成新的 state”,感觉可能会有一丢丢的歧义【可能会有人理解成dispath和reducer一样都可以更改state,但实际上,更改state的地方只有一个,那就是reducer,无论是redux文档的解释还是大佬代码里的表现显示都是如此】。多加几个字,改成“dispatch( action ) 触发 action,通知reducer按计划生成新的 state”,这样子也许更好一点?当然这只是小弟的个人感觉哈
from blog.
大佬,通透👍
from blog.
终于看完了,临摹了一遍,收获很大
https://github.com/jxj322991/redux
from blog.
from blog.
牛逼
from blog.
谢谢大神,很有帮助!
from blog.
牛逼!
from blog.
谢谢!
from blog.
from blog.
unsubscribe的实现方式有问题,以作者给出的DEMO-9,index.js中的代码为例
const un = store.subscribe(() => {
let state = store.getState();
console.log(state.counter.count);
});
store.dispatch({
type: 'INCREMENT'
});
un()
store.dispatch({
type: 'INCREMENT'
});
console.log(store.getState()) // { counter: { count: 3 } }
取消订阅后,count的值仍然发生了变化
from blog.
Related Issues (20)
- 如何升级到 React 18 HOT 1
- React 18 对 Hooks 的影响:一
- React 18 总览 HOT 1
- 我认为 web3 是什么(大白话 web3) HOT 3
- React useEvent:砖家说的没问题
- Base64 编码原来这么简单 HOT 2
- issue一般啥时候用? HOT 1
- 我要去哪里?- 写在我的 30 岁 HOT 9
- 前端好还是后端好,看看7年前端和后端怎么说 HOT 2
- 只想做开源项目、技术项目,不想做业务,有办法吗?
- 前端小白半年准备进大厂
- 程序员如何实现财富自由 HOT 1
- 离职后聊一聊我眼中的蚂蚁 HOT 2
- 前端工程师个人的价值在哪里(换一个人能不能做?)【前端晋升必看】
- rm
- 2022 年:我在死亡边缘走过 HOT 4
- 前端质量体系之纸上谈兵 HOT 1
- 大白话虚拟货币理财原理 HOT 1
- 前端没了?也许是刚开始
- Telegram bot 和 mini apps 开发简易教程
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 blog.