useState не работает с массивом, React Hooks - PullRequest
0 голосов
/ 30 сентября 2019
    const [News, setNews] = useState([]);

    useEffect(() => {
        async function fetchData() {
            const result = await database.collection('newslatters').get();
            result.docs.forEach(doc =>
                setNews([...News, { id: doc.id, data: doc.data() }])
            );
            console.log(News); //empty array
        }
        fetchData();
    }, []);

Я получаю данные из магазина, но setState не работает, данные поступают.

1 Ответ

1 голос
/ 30 сентября 2019

Попробуйте это.

    //const [News, setNews] = useState([]); // you'd better use lowercase.
    const [news, setNews] = useState([]);
    useEffect(() => {
      async function fetchData() {
        const result = await database.collection('newslatters').get();
        /* result.docs.forEach(doc =>
          setNews([...News, {
            id: doc.id,
            data: doc.data()
          }])
        ); */
        let temp = [];
        result.docs.forEach(doc => temp.push({id: doc.id, data: doc.data() });
        setNews(temp);
        // console.log(news); //empty array
      }
      fetchData();
    }, []);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...