在本机样式表中使用变量不会识别变量
Using variables inside react native stylesheets wont recognize the variable
我将颜色作为 props.color 导入我的功能组件并将其设置为状态 'tagColor'。当我在样式表中使用 tagColor 作为值来设置背景颜色时,我收到错误 'variable tagColor not found'
如何在样式表中使用变量?
const Tag = (props) => {
const [tagColor, setColor] = useState(props.color)
return (
<View style={styles.container}>
<TouchableOpacity style={styles.tag} title='tag'>
</TouchableOpacity>
</View>
);
}
const styles = StyleSheet.create({
container: {
alignItems: "center",
justifyContent: "center",
height: 25,
display: 'flex'
},
tag: {
backgroundColor: tagColor,
}
});
export default Tag;
嗯,当然它不识别tagColor
,它在不同的范围内。注意 tagColor
在函数组件的范围内,而 StyleSheet
是不同的范围。
解决这个问题的一种方法是直接将 backgroundColor
传递给 style
属性,就像这样:
<TouchableOpacity style={{backgroundColor: tagColor}} title="tag">
另一种方法是将 StyleSheet
中的 tag
class 定义为接收颜色和 returns 样式的函数,例如:
const styles = StyleSheet.create({
container: {
...
},
tag: tagColor => ({
backgroundColor: tagColor,
})
});
然后像这样使用它:
<TouchableOpacity style={styles.tag(tagColor)} title="tag">
如果除了 backgroundColor
没有其他样式,我会选择第一种方式。如果您需要更多样式,请使用第二种方法。
我将颜色作为 props.color 导入我的功能组件并将其设置为状态 'tagColor'。当我在样式表中使用 tagColor 作为值来设置背景颜色时,我收到错误 'variable tagColor not found'
如何在样式表中使用变量?
const Tag = (props) => {
const [tagColor, setColor] = useState(props.color)
return (
<View style={styles.container}>
<TouchableOpacity style={styles.tag} title='tag'>
</TouchableOpacity>
</View>
);
}
const styles = StyleSheet.create({
container: {
alignItems: "center",
justifyContent: "center",
height: 25,
display: 'flex'
},
tag: {
backgroundColor: tagColor,
}
});
export default Tag;
嗯,当然它不识别tagColor
,它在不同的范围内。注意 tagColor
在函数组件的范围内,而 StyleSheet
是不同的范围。
解决这个问题的一种方法是直接将 backgroundColor
传递给 style
属性,就像这样:
<TouchableOpacity style={{backgroundColor: tagColor}} title="tag">
另一种方法是将 StyleSheet
中的 tag
class 定义为接收颜色和 returns 样式的函数,例如:
const styles = StyleSheet.create({
container: {
...
},
tag: tagColor => ({
backgroundColor: tagColor,
})
});
然后像这样使用它:
<TouchableOpacity style={styles.tag(tagColor)} title="tag">
如果除了 backgroundColor
没有其他样式,我会选择第一种方式。如果您需要更多样式,请使用第二种方法。