Stylesheet.create返回对象而不是数字

时间:2020-09-08 14:35:30

标签: react-native stylesheet

我使用RN 0.62.2对本地设置进行了简单测试:

const styles = Stylesheet.create({
  container: {
    flex: 1
  }
});

console.log(styles);

鉴于理论上样式表可以缓存样式,因此我希望得到这样的日志:

{
  container: 120
}

但是实际上它返回对象:

{
  container: { flex: 1 }
}

然后我在具有相同版本RN的expo应用程序(https://snack.expo.io/@agustito37/4a556c)中尝试了相同的操作,结果是预期的结果:

{
  container: 120
}

所以我有些困惑,有人认为缓存已删除(What is the point of StyleSheet.create);但是给定expo返回的标识符不确定,Stylesheet.create是否正常工作? 为什么我在博览会上有不同的结果?可能是博览会有较旧版本的样式表吗?

1 个答案:

答案 0 :(得分:0)

我认为这是因为当您使用 StyleSheet.create 时,react-native-web 会将样式对象注册为原子 css 类。所以它可能会返回一个注册回来的ID。如果您不通过 StyleSheet.create 路由样式对象,则会呈现内联样式。我在使用带有 expo/react-native-web 的 UI Kitten 时发现了这一点,并截取了为每种方法生成的不同 css/样式的屏幕截图:

https://github.com/akveo/react-native-ui-kitten/issues/1266

我认为在某些时候它曾经在 react native 上类似地工作,目的是优化跨桥行程,但显然根据您包含的链接不再是这种情况。有趣!

相关问题