Задать вопрос
@bzotsss

Почему в useState не приходит значение? Ассинхронщина?

Всем привет , может кто подсказать почему в useState не приходит значение statusText ? Я понимаю что тут дело связанно скорее всего с асинхронщинной но не понимаю как это обьяснить и что нужно сделать что бы всё работало как я задумал . Если кому не сложно можете пожалуйста подсказать / кинуть что то почитать по этой теме ? Ибо как я понял useState выполняется быстрее useSelector , так что ли выходит ? В statusText значение приходит как и нужно.
const ProfileStatus = () => {
    const dispatch = useDispatch()  
    useEffect(() => {
        dispatch(getStatusThunk())
    }, [])
    const statusText = useSelector(store => store.profilePage.profileStatus)
    const [editMode,
        setEditMode] = useState(false)
    const [status,
        setStatus] = useState(statusText)
    return (
        <div>
            <div>
                <img alt="user photo" src={userImg} />
            </div>
            <div>
                <span>{status}</span>
                <button onClick={() => setEditMode(!editMode)}>Change Status</button>
                <button onClick={() => dispatch(updateStatusThunk())}>Save Status</button>
            </div>
            <div>
                {editMode
                    ? <input
                        onChange={(e) => {
                            let text = e.target.value;
                            setStatus(text)
                        }}
                        value={status} />
                    : null}
            </div>
        </div>
    );
}
export default ProfileStatus;
  • Вопрос задан
  • 259 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
в useState приходит statusText, но useState запоминает его только первый раз, при создании компонента. После чего есть два статуса - тот, который в useState, и тот который в редуксе. И они никак не взаимодействуют между собой. Т.е. когда getStatusThunk обновляет статус в редуксе, статусу состояния на это пофиг.
Тут надо определиться - либо юзать только редуксовый статус, либо синхронизировать их между собой. Зависит от задачи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽