मैं पूछना चाहता हूं कि जब मैं ऑनक्लिक ईवेंट करता हूं तो मेरा राज्य क्यों नहीं बदल रहा है। मैंने कुछ समय पहले खोजा है कि मुझे कंस्ट्रक्टर में ऑनक्लिक फ़ंक्शन को बांधने की आवश्यकता है लेकिन फिर भी राज्य अपडेट नहीं कर रहा है। यहाँ मेरा कोड है:
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
एक वादा वापस नहीं करता है। यदि यह काम करता है, तो यह केवल इसलिए काम करता है क्योंकिawait
फ़ंक्शन में एक async "टिक" का परिचय देता है, और यह हुआ कि उस टिक के दौरान राज्य अद्यतन संसाधित हो गया। इसकी गारंटी नहीं है। जैसा कि यह उत्तर कहता है, आपको पूर्ण कॉलबैक का उपयोग करने की आवश्यकता है (यदि आपको राज्य के अद्यतन होने के बाद वास्तव में कुछ करने की आवश्यकता है, जो असामान्य है। आम तौर पर, आप बस फिर से प्रस्तुत करना चाहते हैं, जो स्वचालित रूप से हैपन करता है)।