【发布时间】:2020-05-12 17:29:36
【问题描述】:
我目前正在使用此函数在 graphql 查询后渲染一些元素并显示结果:
const showUsers = React.useCallback(
(data: UsersLazyQueryHookResult, numberOfUsers: Number) => {
if (data) {
for (var i = 0; i < numberOfUsers; i++) {
const userName = data.users.nodes[i].firstName
.concat(' ')
.concat(data.users.nodes[i].lastName);
return (
<View style={styles.friends}>
<View style={styles.item}>
<Text style={styles.userName}>{userName}</Text>
<View style={styles.addButtonContainer}>
<Button
rounded
onPress={() => {
addFriend(Number(data.users.nodes[i].id));
setIsSubmitted(false);
setUserData(null);
}}>
<Icon name="plus" size={moderateScale(20)} color="black" />
</Button>
</View>
</View>
</View>
);
}
}
},
[createUserRelationMutation, userData, numberOfUsers],
);
我已经读到使用 for 循环不是一个好主意。因此,我试图切换到地图,但我无法。在使用地图时,我不知道如何使用像 const userName 这样的变量。
目前,我只能使用 numberOfUsers = 1 进行测试,所以它可以正常工作,但实际上,我想要 View 中包含的所有 item,其样式为 friends。目前,每个项目都会有一个单独的<View style={styles.friends}>。但是,我想将所有项目映射到一个 <View style={styles.friends}>
【问题讨论】:
标签: javascript reactjs typescript react-native rendering