我使用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是否正常工作? 为什么我在博览会上有不同的结果?可能是博览会有较旧版本的样式表吗?
答案 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 上类似地工作,目的是优化跨桥行程,但显然根据您包含的链接不再是这种情况。有趣!