данные из внешнего источника, передаю их в стор а потом вытаскиваю их оттуда в другом компоненте. В принципе все работает но постоянно в консоли пишет ошибку:
"Warning: Cannot update a component (TestReduxData) while rendering a different component (DataLinkContext). To locate the bad setState() call inside DataLinkContext"
Подскажите пожалуйста как убрать эту ошибку?
DataLinkContext - компонент получающий данные и кладущий в стор
TestReduxData - в нем просто пытаюсь вытащить данные из стора
Спасибо!
У вас реакт роутер подключен? Делаете редирект на основе стейта?
<BrowserRouter> и рендеринг по условию имеете в виду?
Если у вас логика что скажем стетй пустой то nav(/route). То вот этот хук nav перенесите в юзэффект и ошибка должна уйти
У меня сейчас в получающем компоненте такое: import React from 'react'; import { useSelector } from 'react-redux'; export default function TestReduxData() { const dataGpsTableMy = useSelector((state) => state.datas); console.log(dataGpsTableMy.datas[0], 'моя табличка'); попробовал обернуть в useEffect const dataGpsTableMy = useSelector((state) => state.datas); и вообще все упало Вероятно я неправильно понимаю что вы имеете в виду
Во 1 useselecto не используют в useeffect. Во вторых неверно переопределять константу в которую передаете состояние из редакса
Логика такая - определяете в слайсе исходное состояние и экшнны( функции которые будут у вас выполнять изменения стейта) После. Там где вы хотите сделать условно get state вы используете хук юз селектор и получаете часть стейта. А если вам нужно изменить стетй вы должны вызвать dispatch(setUser())
Самый последний вопрос - можно ли прямо в слайсе прописывать функцию получения данных из внешнего источника?
ну можно в файле со слайсом это делать типа такого ))
Можно делать это в файле со слайсом типа такого ))
Нет, посмотри что такое createAsyncThunk
Прям в слайсе - не желательно. Слайс это по сути синтаксический сахар для двух сущностей - реьюсер и экшн креэйтор. Редьюсер простая функция которая получает экшн и стейт и меняет его. Если вам нужно делать доп запросы - типо фетч или другие запросы к апи вам нужен Middleware в redux toolkit есть функция createMiddleware вроде так называется . Если вам нужно навесить загрузку чего то из апи вам нужна эта функция
Обсуждают сегодня