1. ホーム
  2. javascript

[解決済み] setStateはすぐに状態を更新しない

2022-05-10 16:23:25

質問

を実行しても状態が変化しないのはなぜでしょうか? onClick を実行しても状態が変化しないのはなぜでしょうか?しばらく前に、私は onClick 関数をコンストラクタにバインドする必要があることをしばらく前に検索しましたが、それでも状態は更新されません。

以下は私のコードです。

import React from 'react';
import Grid from 'react-bootstrap/lib/Grid';
import Row from 'react-bootstrap/lib/Row';
import Col from 'react-bootstrap/lib/Col';
import BoardAddModal from 'components/board/BoardAddModal.jsx';    
import style from 'styles/boarditem.css';

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

    openAddBoardModal() {
        this.setState({ boardAddModalShow: true }); // set boardAddModalShow to true

        /* After setting a new state it still returns a false value */
        console.log(this.state.boardAddModalShow);   
    }

    render() {    
        return (
            <Col lg={3}>
                <a href="javascript:;" 
                   className={style.boardItemAdd} 
                   onClick={this.openAddBoardModal}>
                    <div className={[style.boardItemContainer,
                                     style.boardItemGray].join(' ')}>
                        Create New Board
                    </div>
                </a>
            </Col>
        );
    }
}

export default BoardAdd

どのように解決するのですか?

このコールバックは本当に厄介です。代わりに非同期awaitを使えばいいだけです。

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