javascript - 以编程方式样式化元素
问题描述
大家好,我有一个元素,我想有条件地应用多种样式
起初,我是这样做的:
<Text
style={[
discountCodeState === '' || !isActiveHandler(value)
? [
style.submitText,
isActiveHandler(value) ? style.submitTextActive : null,
]
: discountCodeState === 'success'
? [style.submitText, style.submitTextSuccess]
: [style.submitText, style.submitTextError],
]}
>
{submitText}
</Text>
这工作正常,但有很多冗余代码,所以我将其重构为:
<Text
style={[
style.submitText,
discountCodeState === '' && isActiveHandler(value)
? style.submitTextActive :
discountCodeState === 'success'
? style.submitTextSuccess
: style.submitTextError,
]}
>
{submitText}
</Text>
但是由于某种原因style.submitText
迷路了,我不知道为什么?
谢谢
解决方案
其他 3 种样式中存在的样式字段将被style.submitText
其他 3 种样式覆盖。当您将相同的样式文件放入样式数组中时,最后一个字段将被覆盖。
例子:
const styles=StyleSheet.create({
style1: {
backgroundColor:'blue',
width:'100%',
height:'50%',
...
},
style2: {
backgroundColor:'red',
width:'50%',
...
},
style3: {
backgroundColor:'green',
...
},
});
<View style={[styles.style1, styles.style2, styles.style3]}/>
您的视图样式将具有:
{
backgroundColor:'green',
width:'50%',
height:'50%',
}
推荐阅读
- oracle - 有什么方法可以在 Oracle 中动态创建插入语句?
- java - 无法从类加载器中找到 QueryDsl JPAQueryFactory
- wordpress - 发送自动电子邮件 WP 成员字段
- api - 现有的 json 有效负载格式错误
- sql - 我正在尝试创建一个触发器,在消息表中创建新记录后,读取每种情绪的计数
- azure - Azure 服务事件集合
- reactjs - Mongoose - Passport / 通过 Facebook 登录返回成功,但不是我想要的重定向
- c# - 循环 xml 并将值存储为变量 - C#
- google-chrome - 如何在 Google Chrome Apps 中监听网络请求/DOM 变化?
- c++ - 如何设置ceph dout级别?