sol*_*liz 7 reactjs material-ui
从 v4迁移到 v5指南指出:
系统
Box
props 在 v5 中有一个可选的替代 API,使用sx
prop. 您可以阅读本节了解这个新 API 背后的“原因”。Run Code Online (Sandbox Code Playgroud)<Box border="1px dashed grey" p={[2, 3, 4]} m={2}> <Box sx={{ border: "1px dashed grey", p: [2, 3, 4], m: 2 }}>
所提到的部分表明:
将系统置于一个 prop (
sx
) 下有助于区分仅为 CSS 实用程序而定义的 props 与为组件业务逻辑而定义的 props。这对于关注点分离很重要。
但是说到性能,这两种方式都属于性能权衡d. Render 1,000 Box
中的基准项吗?或者使用系统属性和prop之间有什么区别吗?sx
在实践中,它们应该是相同的,系统中的一些组件中的 propsBox
或Typography
将被捕获并在sx
prop 中再次传播(来源)。所以它的内部看起来像这样:
const { sx: originalSx, ...otherSystemProps } = props;
// sx and system props will be merged into mergedSx
const { ..., mergedSx } = extendSxProp({ originalSx, ...otherSystemProps });
return <BoxRoot sx={mergedSx} {...} />
Run Code Online (Sandbox Code Playgroud)
sx
这意味着两种方法都在引擎盖下使用prop(最慢的造型方法)。使用系统属性的方法可能会慢一点,因为它需要sx
在内部与另一个道具合并,但我认为这不是一个大问题(两种方法都应该同样慢)。
归档时间: |
|
查看次数: |
1879 次 |
最近记录: |