Size: a a a

React — русскоговорящее сообщество

2021 February 05

Т

Тимофей 🛴 in React — русскоговорящее сообщество
Dmitriy Rovenskiy
Всем привет, только начал изучать реакт жизненные циклы компонента и не понимаю некоторые моменты, подскажите пожалуйста почему строка 34 выполняется два раза подряд?
https://codepen.io/DiRover/pen/MWbKxXv
А ты доку то читал? setState у тебя вообще не рабочий. Но 2 раза вызываться не должно
источник

DM

Daron Mora in React — русскоговорящее сообщество
Max Zhukov
Привет, кто сталкивался с такой ошибкой, проблема в том, что все что я нашел это то, что эта ошибка вызывается если setState не в useEffect, но тут проблема в том что у меня вообще все setState обернуты в useEffect...
Может кто сталкивался
у тебя setState создаётся внутри useEffect?
источник

MZ

Max Zhukov in React — русскоговорящее сообщество
Daron Mora
у тебя setState создаётся внутри useEffect?
Да, при чем на всех страницах
источник

DR

Dmitriy Rovenskiy in React — русскоговорящее сообщество
Тимофей 🛴
А ты доку то читал? setState у тебя вообще не рабочий. Но 2 раза вызываться не должно
читал, но что-то не доходит до меня
источник

DR

Dmitriy Rovenskiy in React — русскоговорящее сообщество
Тимофей 🛴
А ты доку то читал? setState у тебя вообще не рабочий. Но 2 раза вызываться не должно
или может не там где надо читал, если не сложно скинь что-нить с примерами
источник

Т

Тимофей 🛴 in React — русскоговорящее сообщество
Dmitriy Rovenskiy
читал, но что-то не доходит до меня
Коллбек переданный в setState должен возвращать кусок нового состояния а не просто мутировать как у тебя написано. Просто читай внимательно документацию
источник

DM

Daron Mora in React — русскоговорящее сообщество
Max Zhukov
Да, при чем на всех страницах
то есть у тебя там

useEffect(()=> {
 const [count, setCount] = useState(0)
},[])

примерно так?
источник

АМ

Андрей Маргиев... in React — русскоговорящее сообщество
Стейт отдельно создается, эффекты отдельно - мешать их неправильно и работать не будет
источник

MZ

Max Zhukov in React — русскоговорящее сообщество
Daron Mora
то есть у тебя там

useEffect(()=> {
 const [count, setCount] = useState(0)
},[])

примерно так?
А, нет конечно, у меня на странице DashboardPage, которая первая в ошибке вообще нет стэйтов.
А на остальных

const [state, setState] = useState([])
useEffect(() => {
  if (data) {
     setState(data)
}
}, [data])
источник

DM

Daron Mora in React — русскоговорящее сообщество
Max Zhukov
А, нет конечно, у меня на странице DashboardPage, которая первая в ошибке вообще нет стэйтов.
А на остальных

const [state, setState] = useState([])
useEffect(() => {
  if (data) {
     setState(data)
}
}, [data])
Ну тогда желательно бы как-то показать весь код, я с такой ошибкой не сталкивался, сходу не знаю как помочь
источник

MZ

Max Zhukov in React — русскоговорящее сообщество
Я не смогу весь показать, но я закинул в песочницу страницу на которой выбивает ошибку, и я думаю это из-за экспорта withNames и Connect

```
const location = useLocation()
const history = useHistory()
const dispatch = useDispatch()
useEffect(() => {
dispatch(takeUserInfo())
}, [dispatch])

// Protected route
const token =
windowwindow.sessionStorage.getItem("token")
useEffect(() => {
if (!token) {
 history.push("/login")
}
}, [token])



const currentPage = location.pathname
const pageRendering = () => {
switch (currentPage) {
 case "/admin/general-info":
  dispatch(changeSidebarTab("general-info"))
  return <GeneralInfo t={t}/>
 case "/admin/employee":
  dispatch(changeSidebarTab("employee"))
  return <Employee t={t} />
}
}

return(
//
TODO: Rename dashboard wrapper and push it to upper code level,
// possibly to public index.html
<div className="dashboard_wrapper">
 <HeaderWithUser
  withSearch={true}
  notification={true}
  withSidebar={true}
  t={t}
 />
</div>
)

const mapStateToProps = (state:RootState) => {
return {
 sidebar: state.sidebar.sidebarCon,
 sidebarTab: state.sidebar.sidebarTabCondition
}
}



export default
connectconnect(mapStateToProps, null)(DashboardPage)
```
источник

V

Vladislav in React — русскоговорящее сообщество
Привет,
Использую redux
Как вызывать функцию из родительского компонента в дочернем, не пробрасывая пропсы
источник

DK

Daniil Kuznetsov in React — русскоговорящее сообщество
Vladislav
Привет,
Использую redux
Как вызывать функцию из родительского компонента в дочернем, не пробрасывая пропсы
Это загадка что ли?
источник

N

Nikita in React — русскоговорящее сообщество
Vladislav
Привет,
Использую redux
Как вызывать функцию из родительского компонента в дочернем, не пробрасывая пропсы
Контекст
источник

N

Nikita in React — русскоговорящее сообщество
Vladislav
Привет,
Использую redux
Как вызывать функцию из родительского компонента в дочернем, не пробрасывая пропсы
Если с redux хочешь что то достать, тогда ставишь пакет react-redux оборачиваешь коренной компонент компонентом Provider из react-redux и в параметрах туда пихаешь store={store} где store это твой импортированный, заранее инициализированный store
источник

V

Vladislav in React — русскоговорящее сообщество
Nikita
Если с redux хочешь что то достать, тогда ставишь пакет react-redux оборачиваешь коренной компонент компонентом Provider из react-redux и в параметрах туда пихаешь store={store} где store это твой импортированный, заранее инициализированный store
я все это сделал, теперь мне эту функцию нужно вызвать из другого компонента
источник

N

Nikita in React — русскоговорящее сообщество
Vladislav
я все это сделал, теперь мне эту функцию нужно вызвать из другого компонента
Я что то не могу понять зачем вызывать функцию из родительского компонента не пробрасывая её в пропсы? Много уровней в низ?
источник

N

Nikita in React — русскоговорящее сообщество
Vladislav
я все это сделал, теперь мне эту функцию нужно вызвать из другого компонента
источник

N

Nikita in React — русскоговорящее сообщество
Это если просто с любого компонента передать нужно вниз, а если с redux вытащить, тогда так как я описал ранее, а что бы достать можно использовать hook useSelector( selector )
источник

V

Vladislav in React — русскоговорящее сообщество
Nikita
Это если просто с любого компонента передать нужно вниз, а если с redux вытащить, тогда так как я описал ранее, а что бы достать можно использовать hook useSelector( selector )
Спасибо, понял
источник