?
а как же то что вначале они null потом сфетчились в массив
а во втором еффекте в зависимостях stats, тоесть почему оно не реигирует на то что статы сфетчились тоесть изменились
useEffect(()=>{
async function fetchData() {
const promise = await axios.get('https://lb-app.herokuapp.com/stats');
setStats(promise.data);
}
fetchData();
}, []);
useEffect(()=>{
//stats = null
}, [stats]);
Нужно для чего? Вопрос какой-то непонятный
ну например сгрузились данные и я хочу чтото с ними сделать не важно отсортировать там их или фильтрануть как только так сразу я их получу
это в контексте существования стейт менеджеров или в вакууме? Если второе, то вот одной строкой получаешь данные, второй сортируешь)
ну это уже было сделано что ты до сета в stats их сортруеш а тут хочу разобраться почему я не могу их достать когда уже сетил видимо изза ассинхронности , но во воторм еффекте я поставил в зависимомти следить за этими статс но не помогло
Не вызывается второй раз чтоль?
у тебя на скриншоте в первом useEffect нет setState
у меня нету скриншота и там есть setStats его я и подразумевал
где здесь setStats?
ты о зависимостях что ли?
ты помоему чтото напутал ты не на моё сообщение смотрел видимо
это не твое? useEffect(()=>{ async function fetchData() { const promise = await axios.get('https://lb-app.herokuapp.com/stats'); setStats(promise.data); } fetchData(); }, []); useEffect(()=>{ //stats = null }, [stats]);
ну и что вон сет стоит промис сетит когда дождётса
да, увидел. Второй useEffect должен 2 раза вызваться, и во второй раз там должны быть данные в stats. второй раз не вызывается что ли?
проблема нашлась может еффекты так и работают что оно при первой рендере всеравно зашло вот второй useEffect хоть там в зависимостях и стоит stats в моём понгимании при первом рендере должно только сюда заходить componentDidMount или useEffect c пустым массивом а когда я ставлю какуето переменную в зависимости то этот еффект должен срабатывать если это переменная поменялась поправте меня если я гдето не так понимаю
При первом всегда выполняются
вот это и странно переменная не поменялась, но тем не менее еффект сработал
а это уже документацию сначала читать было нужно
эфект работает всегда при первом рендере. А потом уже может реагировать на изменения зависимостей
я это понимаю, и для useEffect c пустым массивом это логически правильно но когда зависимсостях чтото стоит это странно тоесть я count не менял а еффект сработал const [count, setCounter] = useState(0) useEffect(()=>{ console.log('im in effect') }, [count])
при первом рендере сработает, потом уже на изменения count
вот теперь я понял это но почему так сделали непонятно, ну да ладно всем спасибо
такова уж реализация, есть в принципе хаки, как сделать чтобы на первом рендере не срабатывало, ну точнее в любом случае сработает, но тут хотя бы содержимое можно не исполнять
Обсуждают сегодня