Reactjs 反应本机设置状态不一致
在这里,我的状态在使用setState后不会更新。log在大多数情况下显示默认值。为什么Reactjs 反应本机设置状态不一致,reactjs,react-native,Reactjs,React Native,在这里,我的状态在使用setState后不会更新。log在大多数情况下显示默认值。为什么setState不一致 export default class Row extends Component { constructor(props) { super(props); // icons to listview (arrow icon) this.icons = { up: require("../../assets/ic_play_circle_dow
setState
不一致
export default class Row extends Component {
constructor(props) {
super(props);
// icons to listview (arrow icon)
this.icons = {
up: require("../../assets/ic_play_circle_down.png"),
down: require("../../assets/ic_play_circle_up.png")
};
this.state = {
title: props.title,
// getting screen size (width and height)
let: ({ width, height } = Dimensions.get("window")),
// collapsed check the listview expanded or not if it is true: list view not expanded
collapsed: true,
isApproved: false,
comment: "dummy comment"
};
}
acceptApproval = () => {
this.setState({ isApproved: true });
console.log("Approved TICK " + this.state.isApproved);
this.verifyApprovals();
};
regectApproval = () => {
this.setState({ isApproved: false });
console.log("Approved" + this.state.isApproved);
this.verifyApprovals();
};
正如您所知,
setState
是异步的,您应该调用第二个函数作为对setState的回调
this.setState({ isApproved: true }, function(){
this._setApproval(true)
});
};
_setApproval(){
console.log("Approved TICK " + this.state.isApproved);
this.verifyApprovals();
}
regectApproval = () => {
this.setState({ isApproved: false } , function() {
this._setRejection();
});
};
_setRejection() {
console.log("Approved" + this.state.isApproved);
this.verifyApprovals();
}
正如您所知,
setState
是异步的,您应该调用第二个函数作为对setState的回调
this.setState({ isApproved: true }, function(){
this._setApproval(true)
});
};
_setApproval(){
console.log("Approved TICK " + this.state.isApproved);
this.verifyApprovals();
}
regectApproval = () => {
this.setState({ isApproved: false } , function() {
this._setRejection();
});
};
_setRejection() {
console.log("Approved" + this.state.isApproved);
this.verifyApprovals();
}
因为setState是异步的。那么我该如何解决呢?在这里你可以了解
setState
:因为setState是异步的。那么我该如何解决呢?在这里你可以了解setState
:我解决了我的问题。我不知道“setState->asynchronous”好的。你能把正在这里工作的代码放在@hrcjaceptApproval=()=>{this.setState({isApproved:true,collapsed:!this.state.collapsed},function(){this.verifyApprovals();});};我解决了我的问题。我不知道“setState->asynchronous”好的..你能把在这里工作的代码@hrcjaceptApproval=()=>{this.setState({isApproved:true,collapsed:!this.state.collapsed},function(){this.verifyApprovals();});};