Saya ingin bertanya mengapa status saya tidak berubah ketika saya melakukan acara onclick. Saya telah mencari beberapa waktu yang lalu bahwa saya perlu mengikat fungsi onclick di konstruktor tetapi masih negara tidak memperbarui. Ini kode saya:
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 });
// After setting a new state it still return 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
setState
tidak membalas janji. Jika berhasil, itu hanya berfungsi karenaawait
memperkenalkan satu "centang" asinkron ke dalam fungsi, dan kebetulan pembaruan status diproses selama centang itu. Itu tidak dijamin. Seperti yang dikatakan jawaban ini , Anda perlu menggunakan callback penyelesaian (jika Anda benar-benar perlu melakukan sesuatu setelah status diperbarui, yang tidak biasa; biasanya, Anda hanya ingin merender ulang, yang terjadi secara otomatis).