«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему React `setState` выглядит асинхронным, и как я могу обеспечить немедленно отраженное обновленное состояние?

Почему React `setState` выглядит асинхронным, и как я могу обеспечить немедленно отраженное обновленное состояние?

Опубликовано в 2025-02-21
Просматривать:111

Why Does React's `setState` Appear Asynchronous, and How Can I Ensure Updated State is Immediately Reflected?

задерживаемые обновления состояния в React: Понимание асинхронного SetState

При работе с компонентами React очень важно понять природу метода SetState. В отличие от императивного программирования, где обновления состояния происходят немедленно, Setstate React является асинхронным. Это означает, что обновление состояния не гарантирует немедленного размышления во внутреннем состоянии компонента.

] , рассматриваемый вопрос: задержка Boardadd Modal Show Flag

рассмотрим следующий код Фрагмент, который реализует компонент BoardADD в React:

class BoardAdd extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            boardAddModalShow: false
        };
        this.openAddBoardModal = this.openAddBoardModal.bind(this);
    }

    openAddBoardModal() {
        this.setState({ boardAddModalShow: true });
        console.log(this.state.boardAddModalShow);
    }
}

почему?

SetState является асинхронным. После того, как он называется, пользовательский интерфейс остается незатронутым до тех пор, пока не планирует реагировать повторное рендеринг. Оператор Console.log выполняется до возникновения повторного разрешения, что приводит к печати устаревшему значению состояния. Мы можем использовать функцию обратного вызова в качестве аргумента для SetState. Обратный вызов выполняется после обновления штата, и повторный рендеринг произошел:

openadddboardmodal () { this.setState ({boardaddmodalshow: true}, function () { console.log (this.state.boardddmodalshow); }); }

В данном случае оператор Console.Log будет выполнен после обновления состояния, правильно показывая новое значение BoardAddmodalShow как true.

зачем сделать SetState Asynchrony?

openAddBoardModal() {
    this.setState({ boardAddModalShow: true }, function () {
        console.log(this.state.boardAddModalShow);
    });
}
]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3