我想在索引1和2的数据隐藏和所有数据显示在屏幕上,除了这两个数据。我正在使用Map功能显示数据在屏幕上,我的数据来自API调用。这里是我的代码:
const [show, setShow] = useState(true);
axios
.get('url', {
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer token-key`,
},
})
.then(response => {
console.log('response', response);
const data = response.data;
setData(data);
console.log('data=\>', data);
showItem();
})
.catch(error => {
console.log('error', error.response);
});
const showItem = () => {
data.map((item, index) => {
console.log('index of show item', index);
if (index == 1 || index == 2) {
const show = false;
setShow(show);
} else {
const show = true;
setShow(show);
}
});
};
我的逻辑不起作用,并且索引1和2处的数据在API调用期间没有隐藏。以下是我的UI部分:
<View style={styles.leftSideView}>
{data && data.map((item, index) => { return (
<TouchableOpacity key={item.id} style={styles.leftViewStyle}>
{show == true ? (
<Text style={styles.leftView}>{item.name.en}</Text> ) : null}
</TouchableOpacity>
); })}
</View>
2条答案
按热度按时间vwoqyblh1#
在您的
showItem()
中,您正在通过数据进行Map,但是当您在最后一项中时设置为true,这使得show
始终为true(因为它不是索引1或2)。相反,您可以删除它并更改UI部分,如下所示:1cosmwyk2#
如果要显示所有数据,只需
setShow(true)