前端周热点94:memoization,composition,Remix,Next.js, Gatsby,React-Native

150 阅读5分钟

React

Using global memoization in React

Vladimir解释说,有时候仅仅使用useMemo是不够的,我们需要在多个组件之间共享缓存数据。他提出了5种在React组件外以全局方式缓存数据的方法,从单个常量到LRU缓存。我的观点:使用WeakMap也可以是一个不错的解决方案,为什么不在React上下文中提供缓存呢?

React component as prop: the right way™️

Nadia给出了使用React composition的充分理由。她以一个带有文本+图标的按钮为例,提出了3个备选方案,并在不同的更新场景下对它们进行了比较。

  • icon={<MyIcon/>}
  • Icon={MyIcon}
  • renderIcon={(...settings) <Icon {...settings}/>}

我不太喜欢第一种情况,并尽量避免使用cloneElement

拓展阅读:

React-Native

Measuring and improving performance on a React Native app

Alexandre介绍了他的Flipper插件,可以持续测量React-Native的性能(UI和JS线程FPS),并像Lighthouse一样计算得分。他还分享了4个技巧,帮助你测量你的应用程序的性能。TIL关于用adb自动滚动。所有这些都被应用在一个具体的案例中:他的团队将TF1应用的分数从40分提高到90分。

拓展阅读:

Other

Hello, CSS Cascade Layers

对CSS Cascade layers的一个很好的介绍,这是一个值得期待的CSS新功能。看起来它在我们的浏览器中很快会被支持,即使你今天不能使用它(没有polyfill),那也值得看一看。CSS Cascade Laters对CSS级联给予额外的控制以及应用CSS规则的顺序。这可以帮助修复与特异性、插入顺序有关的问题,或者减少使用!!important。如果你只有1分钟时间,可以看一眼这个动画

这就像浏览器重新排列了你的样式,而不是使用CSS文件中定义的顺序。这让我想起了React 😅.为什么这很重要?因为捆绑器和前端工具没有任何明确的规则,以正确的可预测的顺序发出捆绑的CSS。例如,使用Webpack、CSS加载器、JS/CSS代码分割、动态导入、CJS/ESM,你真的知道你的CSS规则在最终页面中的顺序是什么?我绝对不知道! 🤷♂️有了这个新功能,你的CSS可能会变得更加便携。如果有一天你决定使用另一个捆绑器/工具,你不希望不得不重写一切,并修复一大堆与CSS插入顺序变化有关的小CSS问题:Cascade layers,可以防止这种情况。

这些天在CSS方面有很多活动。还可以看看Interop 2022项目:浏览器计划在今年关注的有关浏览器兼容性的功能,包括cascade layers

拓展阅读:

订阅原文:www.getrevue.co/profile/thi…