我的样式对象:mainModule/styles.js
export default StyleSheet.create({
container: {
width: 0
},
basicInfo: {
height: 167,
backgroundColor: 'red,
justifyContent: 'center',
alignItems: 'center'
}
}
导入import generalStyle from '@mainModule/styles'
时(我创建了一个package.json
文件以使该路径有效)
控制台日志显示如下:
对象{ 容器:10, basicInfo:118 }
这里的任何人都可以帮助我吗?
答案 0 :(得分:3)
@NellyNgo,你可能试图压扁StyleSheet.create
返回的整个对象。我做了同样的事情,这让我发疯,因为它似乎对其他所有人都有用,但对我来说,它返回了我传给它的相同价值。实际上,flatten将适用于StyleSheet.create
创建的对象的单独属性。像这样:
const styles = StyleSheet.create({prop: {...}, prop2: {...})
然后你可以StyleSheet.flatten(styles.prop)
检查node_modules / react-native / Libraries / StyleSheet / flattenStyle.js中的代码。那是我失败的地方。
function getStyle(style) {
if (typeof style === 'number') {
return ReactNativePropRegistry.getByID(style);
}
return style;
}
如果感兴趣,请检查整个来源
我的RN版本是0.41.2
答案 1 :(得分:1)
StyleSheet.create
创建缓存的样式ID,以减少通过桥的数据量。
您可以使用它们并且它们可以完美地工作,但如果您需要在导入后更改它们,则应该导出样式对象而不使用StyleSheet.create
。
答案 2 :(得分:1)
在 styles.js :
中const stylesObj = {
container: {
width: 0
},
basicInfo: {
height: 167,
backgroundColor: 'red',
justifyContent: 'center',
alignItems: 'center'
}
}
export default stylesObj
在组件中:
import stylesObj from 'styles'
const styles = StyleSheet.create(stylesObj)
答案 3 :(得分:0)
export default YourStyle = StyleSheet.create({
container: {
width: 0
},
basicInfo: {
height: 167,
backgroundColor: 'red,
justifyContent: 'center',
alignItems: 'center'
}
}
然后import YourStyle from './YourStyle';