@LI4NOOST

В axios+react, нет отрисовки вовремя, что делать?

const [resp, setResp] = useState([])
const [isLoading, setIsLoading]= useState(false)
const [isError, setError] = useState('')
const tasks = useSelector(state=>state.taskReducer)

useEffect(()=>{
getResponse()
}, [])

const getResponse= async ()=> {
const response = await axios.get ('localhost:3001/tasks')
console.log(response.data)
setResp(response.data)
tasks.push(...resp)
}
Всем здравствуйте. Пишу приложение ToDo на React, с использованием Redux. В приведенном ниже коде отправляю запрос с помощью axios, ответ приходит и мне нужно закинуть его в стейт resp, что бы потом запушить в store, в массив tasks и тут начинается трудность. Данные не рендарятся при открытии сервера и при обновлении, потому что стейт пустой в этот момент. И непонятно почему... Если вынести tasks.push(...resp) в глобальную область добавляются данные сразу, но начинается постоянный перерендер и добавление их снова. А нужно получить данные один раз после запуска и передать их в редакс.



  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
Maxsior
@Maxsior
loading...
По примеру кажется, что не хватает теории по рендерингу, хукам и стейт-менеджменту - почитайте теорию с примерами.

Вам нужно tasks менять через Redux, а именно через dispatch(). Если вы просто мутируется массив, это не изменит стейт, а значит не вызовет перерендер.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы