Здравствуйте, у меня есть вопрос о вызове fetch внутри componentDidMount. Вот пример кода:
import React, { useState, useEffect } from 'react';
import axios from 'axios';
function App() {
const [data, setData] = useState({ hits: [] });
useEffect(async () => {
const result = await axios(
'https://hn.algolia.com/api/v1/search?query=redux',
);
setData(result.data);
}, []);
return (
<ul>
{data.hits.map(item => (
<li key={item.objectID}>
<a href={item.url}>{item.title}</a>
</li>
))}
</ul>
);
}
export default App;
Здесь
useEffect(()=>{},[]);
Это то же самое, что и componentDidMount.
Внутри useEffect мы извлекаем данные с сервера и сохраняем их в data
. Затем data
используется для отображения элементов на странице как <li>
элементов.
У меня такой вопрос, выполняется ли вызов fetch (ie. Ax ios) ПОСЛЕ ТОГО, КАК App
компонент монтируется в первый раз? Если так, как data
заполняется вовремя для первого рендеринга?
<ul>
{data.hits.map(item => (
<li key={item.objectID}>
<a href={item.url}>{item.title}</a>
</li>
))}
</ul>
Насколько я понимаю, поскольку data
заполняется ПОСЛЕ первого монтирования, оно не будет доступно для рендеринга?
Может быть, я неправильно понимаю разницу между МОНТАЖОМ и РЕНДЕРИНГОМ?
Может кто-то исправить меня, потому что приведенный выше код, очевидно, работает.
Спасибо.