代码之家  ›  专栏  ›  技术社区  ›  Roger Coll

是否可以根据值更改文本颜色?(本机反应)

  •  3
  • Roger Coll  · 技术社区  · 7 年前

    我正在使用React native的应用程序中工作,下面是我遇到问题的代码:

    import React, { Component } from "react";
    import { Text, StyleSheet } from "react-native";
    import { Content, Card, CardItem, Body, Left } from "native-base";
    import { PricingCard } from "react-native-elements";
    
    export default class AppBodyData extends Component {
      render() {
        let articles = this.props.data.map(function (articleData, index) {
          return (
            <PricingCard
              //color='#ff3300'
              wrapperStyle={
                articleData.percent_change_1h >= 0 ? styles.green : styles.red
              }
              info={[
                "1h change: " + articleData.percent_change_1h,
                "24h change: " + articleData.percent_change_24h,
                "7days change: " + articleData.percent_change_7d,
              ]}
              button={{
                title: "More information",
                icon: "info",
                backgroundColor: "#4f9deb",
              }}
            />
          );
        });
    
        return <Content>{articles}</Content>;
      }
    }
    
    const styles = StyleSheet.create({
      green: {
        color: "#00ff00",
      },
      red: {
        color: "#ff0000",
      },
    });
    
    module.export = AppBodyData;
    

    我需要的是如果 articleData.percent_change_1h 变量为正 该变量的颜色 必须为绿色,否则必须为红色。

    PricingCard是react native elements library的对象: https://react-native-training.github.io/react-native-elements/API/pricing/

    提前感谢

    1 回复  |  直到 4 年前
        1
  •  3
  •   Arman Charan    7 年前

    你可以使用 ternary operator 操纵 styles 传递给您的 PricingCard's wrapperStyle prop .

    // Stylesheet.
    import { StyleSheet } from 'react-native'
    
    // Card.
    <PricingCard wrapperStyle={(articleData.percent_change_1h >= 0) ? styles.green : styles.red} ../>
    
    // Styles.
    const styles = Stylesheet.create({
      green: {
        color: '#00ff00'
      },
      red: {
        color: '#ff0000'
      }
    })