effect_tw
@effect_tw

Как useCallback передает новый стейт в кастомный хук в данном случае?

Есть "кастомный" хук useAction, который возвращает другой хук, а он в свою очередь диспатчит данные в редакс стор.
Суть вопроса такова: Как хук, который находится в теле моего функционального компонента, дает доступ(передает) в хук полученный при вызове кастомного хука, который стоит в массиве зависимостей в хуке функционального компонента , новые данные из локального стейта(menuState)? Как я понимаю у хука функциональном компоненте есть доступ к menuState(очевидно) , но как его получает actionCreator , просто как из контекста его берет ? или полностью перезапись происходит переменной const actionCreator = useAction(changeMenuState,{menuState:!menuState},menuState); ?
Функциональный компонент:
export const MenuBtn = (props) => {
	const [menuState,setMenuState] = useState(false);
 	const getMenuState = useSelector((state) => state.menu.menuState);
	useEffect(()=>{
 	   setMenuState(getMenuState);
 	},[getMenuState]);
 	const actionCreator = useAction(changeState,{menuState:!menuState},menuState);
	const changeMenuState = useCallback((elem)=>{
 		actionCreator()
 	},[actionCreator])
	
	return (<div>
</div>)

Кастмный хук:
export const useAction = (action, data, deps = null) => {
  const dispatch = useDispatch();
  const actionCreator = useCallback(()=>{
    dispatch(action({...data}))
  },deps? [deps] : [dispatch])
  return actionCreator;
};
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
Simply1993
@Simply1993
Frontend developer
Как хук, который находится в теле моего функционального компонента, дает доступ(передает) в хук полученный при вызове кастомного хука, который стоит в массиве зависимостей в хуке функционального компонента , новые данные из локального стейта(menuState)?

Так Вы сами передаете значение menuState во втором параметре useAction
{menuState:!menuState}

Или я не понял вопроса :(
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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