内返

问题描述 投票:0回答:1

根据graphql查询的结果,我在函数中渲染了一些项目。contact

export const Whitelist: React.FunctionComponent = (props) => {
  const [userData, setUserData] = useState<UsersQueryHookResult>('');

  const called = () => {
    console.log('inner return')
  }
  const contacts = () => {
    console.log('running');
    const { loading, error, data } = useUsersQuery({
      variables: {
        where: { id: 34 },
      },
    });
    console.log('DATA COMING', data);
    return (
      <View style={styles.allUsers}>
        {data.users.nodes.map(
          (item: { firstName: string; lastName: string; id: number }) => {
            const userName = item.firstName
              .concat(' ')
              .concat(item.lastName);
            return (           
              <View style={styles.item} key={item.id}>
                  {called()}  
                <Thumbnail
                  style={styles.thumbnail}
                  source={{
                    uri:
                      'https://cdn4.iconfinder.com/data/icons/avatars-xmas-giveaway/128/afro_woman_female_person-512.png',
                  }}></Thumbnail>
                <Text style={styles.userName}>{userName}</Text>
                <View style={styles.addButtonContainer}>
                  <Button
                    rounded
                    style={styles.addButton}>
                    <Icon
                      name="plus"
                      size={moderateScale(20)}
                      color="black"
                    />
                  </Button>
                </View>
              </View>
            );
          },
        )}
      </View>
    );
  };

  return (
    <SafeAreaView style={{ flex: 1 }}>
      <Container style={{ flex: 1, alignItems: 'center' }}>
        <Item style={styles.addToWhitelist}>
          <Icon
            name="add"
            onPress={() => navigation.navigate('AddContactTry')}
          />
          <Text style={styles.addToContactTitle}>Add contact</Text>
        </Item>
        <Text onPress={() => navigation.navigate('Home')}>Zurück</Text>
        {contacts()}
      </Container>
    </SafeAreaView>
  );
};

但是,我没有看到任何项目被渲染。如果我在 contacts(例如缩略图),我能够看到。但是,我没有看到第二个返回的任何东西。我如何解决这个问题?

我尝试使用 {called()} 在内部返回调试。它应该显示一个日志,但它没有。

javascript reactjs typescript react-native render
1个回答
0
投票

你应该等待请求完成。你的请求被发送,紧接着你的返回被执行,由于数据是空的,所以没有要渲染的内容。声明你的函数async并等待请求完成

© www.soinside.com 2019 - 2024. All rights reserved.