Me gustaría preguntar por qué mi estado no cambia cuando hago un evento onclick. Hace un tiempo busqué que necesito vincular la función onclick en el constructor pero aún así el estado no se actualiza. Aquí está mi código:
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
no devuelve una promesa. Si funcionó, solo funcionó porqueawait
introduce un "tick" asincrónico en la función, y sucedió que la actualización de estado se procesó durante ese tick. No esta garantizado. Como dice esta respuesta , debe usar la devolución de llamada de finalización (si realmente necesita hacer algo después de que se actualice el estado, lo cual es inusual; normalmente, solo desea volver a renderizar, lo que sucede automáticamente).