React-Native:带有 if 语句的 Flatlist
React-Native: Flatlist with if statement
const [info, setInfo] = useState([
{id: '1', name: 'firstName', place: 'BER'},
{id: '2', name: 'SecondName', place: 'BER'},
{id: '3', name: 'thirdName', place: 'VIE'},
{id: '4', name: 'fourthName', place: 'VIE'},
]);
<Flatlist
data={info}
renderItems={({ items }) => (
if (items.id < 3) {
<Text style={{color:'red'}}>{items.name}</Text>
}
if else (items.id => 3) {
<Text style={{color:'blue'}}>{items.name}</Text>
}
)}
/>
我无法像这样使用 if else 语句,我也尝试过使用索引,但代码在这两种情况下都能编译。
我想要的是根据 'id' 不同的代码应该编译。
感谢您的帮助。
正确的结构是{{ item }}
。
此外,在您的情况下,您不能使用短语法 return,因为您的 return 不是由单行代码定义的
({{item}}) => <YourComponent/>
到
({{item}}) => {
return <YourComponent/>
}
你的情况
<Flatlist
data={info}
renderItems={({ item }) => {
if (item.id < 3) {
return <Text style={{color:'red'}}>{item.name}</Text>
}
if else (items.id => 3) {
return <Text style={{color:'blue'}}>{item.name}</Text>
}
}}
/>
如果你想使用短语法,你也可以这样做:
<Flatlist
data={info}
renderItems={({ item }) => item.id < 3 ?
(<Text style={{color:'red'}}>{item.name}</Text>) :
(<Text style={{color:'blue'}}>{item.name}</Text>)
}
如果你想针对不止 1 个条件进行缩放,嵌套多个三元运算符不是一个好习惯,但你可以通过[=16]实现=]
condition1? <YourComponent1/> : condition2? <YourComponent2/> : <YourComponent3/>
在我看来,您不应该使用短语法,因为在这种特定情况下,它会使代码更难阅读。
您可以使用三元运算符?
:
<Flatlist
data={info}
renderItems={({ items }) => (
<Text style={{ color: items.id < 3 ? 'red' : 'blue' }}>{items.name}</Text>
)}
/>;
const [info, setInfo] = useState([
{id: '1', name: 'firstName', place: 'BER'},
{id: '2', name: 'SecondName', place: 'BER'},
{id: '3', name: 'thirdName', place: 'VIE'},
{id: '4', name: 'fourthName', place: 'VIE'},
]);
<Flatlist
data={info}
renderItems={({ items }) => (
if (items.id < 3) {
<Text style={{color:'red'}}>{items.name}</Text>
}
if else (items.id => 3) {
<Text style={{color:'blue'}}>{items.name}</Text>
}
)}
/>
我无法像这样使用 if else 语句,我也尝试过使用索引,但代码在这两种情况下都能编译。
我想要的是根据 'id' 不同的代码应该编译。
感谢您的帮助。
正确的结构是{{ item }}
。
此外,在您的情况下,您不能使用短语法 return,因为您的 return 不是由单行代码定义的
({{item}}) => <YourComponent/>
到
({{item}}) => {
return <YourComponent/>
}
你的情况
<Flatlist
data={info}
renderItems={({ item }) => {
if (item.id < 3) {
return <Text style={{color:'red'}}>{item.name}</Text>
}
if else (items.id => 3) {
return <Text style={{color:'blue'}}>{item.name}</Text>
}
}}
/>
如果你想使用短语法,你也可以这样做:
<Flatlist
data={info}
renderItems={({ item }) => item.id < 3 ?
(<Text style={{color:'red'}}>{item.name}</Text>) :
(<Text style={{color:'blue'}}>{item.name}</Text>)
}
如果你想针对不止 1 个条件进行缩放,嵌套多个三元运算符不是一个好习惯,但你可以通过[=16]实现=]
condition1? <YourComponent1/> : condition2? <YourComponent2/> : <YourComponent3/>
在我看来,您不应该使用短语法,因为在这种特定情况下,它会使代码更难阅读。
您可以使用三元运算符?
:
<Flatlist
data={info}
renderItems={({ items }) => (
<Text style={{ color: items.id < 3 ? 'red' : 'blue' }}>{items.name}</Text>
)}
/>;