Flatlist не читает переменную «data», установленную с использованием хуков в native - PullRequest
1 голос
/ 25 января 2020

Я использую хуки в собственном проекте «Реакция» и задаю переменную данных с базой данных Firebase, на которую ссылаются, когда я консоль регистрирую эту переменную данных, сначала она показывает ноль, и в течение нескольких секунд она показывает извлеченные данные, но flatlist не читая это. Пожалуйста, исправьте мою ошибку. Вот мой код:

RecommenTab = () => {
  useFirebaseQuery = ref => {
    const [docState, setDocState] = useState({
      isLoading: true,
      data: null
    });

    useEffect(() => {
      return ref.on("value", snapshot => {
        setDocState({
          isLoading: false,
          data: snapshot
        });
      });
    }, []);
    return docState;
  };

  renderSeparator = () => {
    return (
      <View
        style={{
          height: 1,
          width: "86%",
          backgroundColor: "#CED0CE",
          marginLeft: "14%"
        }}
      />
    );
  };

  userList = () => {
    const ref = database.ref("users");
    const { isLoading, data } = this.useFirebaseQuery(ref);
    if (data != []) {
      return (
        <SafeAreaView style={{ marginTop: 20 }}>
          {console.log(data)}
          <Text>SHOW</Text>
          <FlatList
            data={data}
            renderItem={({ item }) => (
              <View>
                <Text>Work</Text>
                <ListItem
                  title={item.name}
                  subtitle={item.username}
                  leftAvatar={{
                    rounded: true,
                    source: { uri: item.avatar }
                  }}
                />
              </View>
            )}
            keyExtractor={item => item.id}
            ItemSeparatorComponent={this.renderSeparator}
          />
        </SafeAreaView>
      );
    }
  };

  return <View>{this.userList()}</View>;
};
...