首页   注册   登录
 devwolf 最近的时间轴更新

devwolf

V2EX 第 434782 号会员,加入于 2019-08-09 16:02:49 +08:00
devwolf 最近回复了
《卓有成效的管理者》个人原因,这本是自己开始自行探索求知的第一本,时间上是大学里头疼时间管理时无意中入手的,结果却在其他方面起了很大的效果。
高中时贴吧得知的《天才在左疯子在右》也给了笔者很大的思维拓展,
不过谈及对笔者影响更大的自然是前者。
题外话一下,
题主因为今年毕业年挑毕设技术选用的的时候受了 vue+express+mongobd 这套安利(起个毕设用小项目还觉得挺便当的),所以面试的时候也就着 vue 指望在项目里深入一下来着(人菜瘾大)。结果刚进来就让转 react,开始的项目因为是别人架子用的 mirrorx 就没过多了解 redux,现在主管要求自己可以讲讲 mirrorx 简化了哪些实现,就自己淘宝了个视频回头看看 redux 和 react-redux。
挺尴尬的,公司也是那种所谓后端即时全栈的地儿,只有洒家一个是冲着前端开发面试来着。进来的同期同事虽然一起在学 react,那些同事也就每天有余裕的时候看会儿 react,而题主就被丢在角落里扎猛子(想着题主会的他们都会,他们会的题主不会),忐忑不安地照领了夏天和中秋的员工福利。
感谢提示,如今我认为我遇到的问题已经解决(不包括诞生的问题)——
在后续的排查出错原因中,找到了对这种处理的描述“重新定义 setState 方法来取消异步操作”:
https://www.cnblogs.com/jlj9520/p/7371955.html 中对重写 setState 操作得到了确认,
https://blog.csdn.net/GoldenLegs/article/details/86509806 一文提到了该处理是“阻止异步操作”,因为个人能力有限无法辨别该说法是否正确,故从 momocraft 的“報錯信息沒了不等於 "解決" 了”出发,继续寻找更稳妥的处理方法。
https://www.jianshu.com/p/8be320d982a8 里的方法二中找到了,“设置一个 flag,当 unmount 的时候重置这个 flag”

落实到楼一提到的迷你版 redux 项目里便是将 constructor 时 store.subscribe(this.handleStoreChange)订阅的 handleStoreChange 方法做一个组件是否卸载的判断 handleStoreChange(){
if(this._isMounted === true){
this.setState(store.getState())
}
}



[说来惭愧也是技不如人] 原本在查到上述重写 setState 操作前有考虑过这个 flag 法子。
不过我当时是在 export default 之上声明了个全局变量 flag 然后初次渲染时 true 卸载前 false,结果报错依旧。最后成功的处理里,这个 flag 是声明在组件的 this 上。
有路过的好心人可以指出两者在此例中区别的话劳烦赐教一下,
当然阁下如果没有雅兴那我只好寄望日后的学习里渐渐接触真相了 orz
@momocraft 大佬能再指点一下 1 楼的那个在线编辑项目里面是哪边引起了这个问题呢?
[在线再现报错]
https://stackblitz.com/edit/redux-learn-01 这个是更小的例子展现了问题,可以在线编辑的 react+redux 项目。
具体操作:
pages/home/testone/index 中移除 componentWillUnmount 部分的处理,然后右侧点击测试 1->点击返回首页->点击测试 1->执行输入可以再现报错。
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1994 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 15ms · UTC 00:20 · PVG 08:20 · LAX 17:20 · JFK 20:20
♥ Do have faith in what you're doing.