Задать вопрос
@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;
  • Вопрос задан
  • 253 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
в useState приходит statusText, но useState запоминает его только первый раз, при создании компонента. После чего есть два статуса - тот, который в useState, и тот который в редуксе. И они никак не взаимодействуют между собой. Т.е. когда getStatusThunk обновляет статус в редуксе, статусу состояния на это пофиг.
Тут надо определиться - либо юзать только редуксовый статус, либо синхронизировать их между собой. Зависит от задачи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы