![](/img/trans.png)
[英]change touchableopacity backgroundColor on button press react native
[英]How to change BackgroundColor depending of a value in react native
我正在嘗試為某些統計數據渲染一些條形,並且我希望它們的顏色取決於它們所具有的值。 我嘗試使用if
語句和switch
但它似乎不起作用
對於switch
,它將使用default
值,而if
將使用第一個選中的值。
為我的英語Sry 😅
import React from "react";
import { View, Text, StyleSheet } from "react-native";
const Stats = ({ statName, value }) => {
let color;
if (value == 0) {
color = "";
} else if ((value) => 1 && value < 25) {
color = "red";
} else if (value >= 25 && value < 50) {
color = "orange";
} else if (value >= 50 && value < 90) {
color = "yellow";
} else if (value >= 90) {
color = "green";
}
// switch (value) {
// case value >= 1:
// color = "red";
// break;
// case value >= 25:
// color = "orange";
// break;
// case value >= 50:
// color = "yellow";
// break;
// default:
// color = "";
// }
return (
<View style={styles.container}>
<Text>{statName}</Text>
<Text>{value}</Text>
<View
style={[styles.bar, { width: value * 1.5, backgroundColor: color }]}
/>
</View>
);
};
const styles = StyleSheet.create({
container: {
flexDirection: "row",
alignItems: "center",
justifyContent: "center",
},
bar: {
height: 20,
},
});
export default Stats;
代碼的邏輯部分看起來沒問題。 問題可能與樣式有關。
你能把你的風格改為這些而不是你的:
const styles = StyleSheet.create({
container: {
flex: 1,
flexDirection: "row",
alignItems: "center",
justifyContent: "center",
},
bar: {
height: 20,
width: 20
},
});
此外,如果頂級解決方案不起作用,您能否驗證value是一個數字? 通過安慰它
console.log(值類型)
拼寫錯誤。 您必須將(value) => 1 && value < 25)
更改為(value) >= 1 && value < 25)
if 語句中存在一個問題: else if ((value) => 1 && value < 25) {
,如果您仔細注意,這應該是: else if (value >= 1 && value < 25) {
。
為什么? (value) => 1
是一個始終返回 1 的箭頭函數。
這應該做的工作:
(value >= 1 && value < 25)
但是如果你把這段代碼轉換成一個函數會更好,像這樣:
const getBackgroundColor = () => {
let color;
if (value === 0) {
color = '';
} else if (value >= 1 && value < 25) {
color = 'red';
} else if (value >= 25 && value < 50) {
color = 'orange';
} else if (value >= 50 && value < 90) {
color = 'yellow';
} else if (value >= 90) {
color = 'green';
}
return color;
};
並像這樣使用它:
{width: value * 1.5, backgroundColor: getBackgroundColor()},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.