如何在if-native中使用if条件渲染元素?

hes*_*eni 2 javascript jsx react-native

我有一个针对用户的个人资料页面,每个用户的使用率从0到5。我想根据用户的排名填充星星。例如,如果用户的费率为4,我需要填写4星,而空白为1星

这是我在render方法中的代码:

<Text>{item.rate}</Text> // here I get the rate from api 0 to 5
<View>
    <Icon name="star" color="#9fa1a7" type="solid" size={16}/>
    <Icon name="star" color="#9fa1a7" type="solid" size={16}/>
    <Icon name="star" color="#9fa1a7" type="solid" size={16}/>
    <Icon name="star" color="#9fa1a7" type="solid" size={16}/>
    <Icon name="star" color="#ffffff" type="solid" size={16}/>
</View>
Run Code Online (Sandbox Code Playgroud)

jo_*_*_va 6

由于您的星星数量不会改变,而只会改变颜色,因此请color={item.rate >= X ? 'color on' : 'color off'}在每个图标上使用:

<Text>{item.rate}</Text>
<View>
    <Icon name="star" color={item.rate >= 1 ? '#9fa1a7' : '#ffffff'} type="solid" size={16}/>
    <Icon name="star" color={item.rate >= 2 ? '#9fa1a7' : '#ffffff'} type="solid" size={16}/>
    <Icon name="star" color={item.rate >= 3 ? '#9fa1a7' : '#ffffff'} type="solid" size={16}/>
    <Icon name="star" color={item.rate >= 4 ? '#9fa1a7' : '#ffffff'} type="solid" size={16}/>
    <Icon name="star" color={item.rate >= 5 ? '#9fa1a7' : '#ffffff'} type="solid" size={16}/>
</View>
Run Code Online (Sandbox Code Playgroud)

或从数组生成恒星以减少重复:

<Text>{item.rate}</Text>
<View>{
    [1, 2, 3, 4, 5].map(score =>
        <Icon
            name="star"
            color={item.rate >= score ? '#9fa1a7' : '#ffffff'}
            type="solid"
            size={16}
         />
    )
}</View>

Run Code Online (Sandbox Code Playgroud)