【问题标题】:inner return not rendering anything内部返回不渲染任何东西
【发布时间】:2020-09-25 01:05:04
【问题描述】:

根据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】:

    您应该等待请求完成。您的请求已发送,然后您的退货将立即执行,并且由于数据为空,因此没有要呈现的内容。将您的函数声明为异步并等待请求完成

    【讨论】:

    • 但是我读到查询钩子没有返回承诺,所以我不能在这里使用 try catch 块。你能举个例子说明我如何实现你所说的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 2019-03-21
    • 2014-09-08
    • 2017-10-06
    • 1970-01-01
    相关资源
    最近更新 更多