+-
我为什么要使用React原生StyleSheet?

我为什么要用这个:

const styles = StyleSheet.create({
    ...
});

而不是这个:

const styles = {
    ...
};

StyleSheet提供的属性对我来说似乎不太需要。

10
投票

Performance of rendering is the main advantage.

将常规样式对象传递到StyleSheet.create()时,模块将冻结对象并为每个对象分配一个ID。这允许避免在每次渲染过程中创建新的样式对象,并且它允许仅跨异步桥发送一次对象。在每次渲染时发送相同的样式对象可能会导致渲染性能下降。

从我所看到的,当设置组件的样式时,即使传递对象数组,它们也都工作(普通对象,StyleSheet对象)。

使用StyleSheet对象时的缺点

1)你不能像这样styles.myNiceComponent.backgroundColor === 'blue'进行比较

关于这个缺点的更多细节在这里:Why can't we check a style attribute of a react-native app?

2)根据某些标准(如屏幕旋转)重新计算样式需要一些额外的基础结构代码来确定要使用的样式。如果您使用简单的对象,则每次都可以重新计算它们。