在翻看
react-redux
源码中的一段工具函数代码时候,对其中的逻辑有一丝迷惑,后科学上网一波得到了我想要的答案。本文是一篇关于Object.is
、==
、===
的逻辑梳理。
react-redux
库的浅层比较文件(shallowEqual.js
)内的工具方法is
其实就是现在ES6的Object.is
方法的polyfill
实现,在MDN上我们也可以看到对应的算法描述。
在Redux的官网文档中,我们可以看到一些结合社区库实现渲染优化的方案,如
reselect
、immutable.js
等。今天这篇文章主要是对其源码的阅读,便于理解为何可以起到优化的作用。
使用React的开发者肯定对
Warning: Can't call setState (or forceUpdate) on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.
这一句控制台的警告不陌生,它通常发生在异步的场景中。具体而言,当我们试图在一个timer或ajax请求的回调中去setState
当前组件状态,就有一定风险看到这段警告。因为当setState
真实被回调时,我们的组件可能已经被卸载了。那么我们该如何处理这个问题呢?
进行RN开发也差不多有1年的时间了,这篇文章是篇阶段性的总结文章,主要进行React在web和native应用上的对比。
关于redux生态中循序渐进出现的redux-thunk、redux-promise、redux-saga、redux-observable等异步中间件库其实本质上都是为了处理一个状态追踪管理问题,至于为什么会出现那么多方案,实际上都是为了使我们的组件逻辑表述更加纯粹。
之前一直想整个发布到npm上的工具,方便之后的某个项目使用,不过公司这方面的设施比较全面,且都架设在内部服务器上固没什么机会。直到后续接手海外项目,发现多语言处理的时候,都依赖一个老的Excel宏脚本进行js静态文件生成,灵活性非常差,只要原本文档格式或结构改变就会失效,而且由于历史原因,目前文档都上了云维护(结构大改),以前会写Excel脚本的兄弟也跑路了。致使一段时间开发人员在做海外需求的时候疯狂cv,效率低下还容易出错。于是抽空用node开发了一个简单的符合我们业务场景的解析excel生成静态js资源的cli,并发布到npm上,自己维护着玩,顺道提升一下开发体验。