Javascript 反应输入复选框不间接更新状态

Javascript 反应输入复选框不间接更新状态,javascript,reactjs,checkbox,Javascript,Reactjs,Checkbox,不幸的是,我不理解渲染中输入复选框的逻辑。问题是: 1) 我有一个带有onChange和选中的属性的输入类型复选框 2) 还有按钮handleSearch,点击按钮后从后端获取API信息 3) 如果我单击复选框,它也将从API接收信息(来自与第二步相同的API,参数相同)。 问题是:如果我单击复选框,它将发送复选框的falsy参数,因为据我所知,由于某种原因,它正在工作,反之亦然。但,若我尝试先点击按钮,它会正常工作 所以我需要发送处理checbox的truthy参数 在render()中输入:

不幸的是,我不理解渲染中输入
复选框的逻辑。问题是:

1) 我有一个带有
onChange
选中的
属性的输入类型复选框
2) 还有按钮
handleSearch
,点击按钮后从后端获取API信息
3) 如果我单击
复选框
,它也将从API接收信息(来自与第二步相同的API,参数相同)。

问题是:如果我单击
复选框
,它将发送
复选框
的falsy参数,因为据我所知,由于某种原因,它正在工作,反之亦然。但,若我尝试先点击按钮,它会正常工作

所以我需要发送处理checbox的truthy参数

在render()中输入:


复选框处理程序():

onGroupingChange=(e)=>{
const{grouping}=this.state;
this.setState({grouping:e.target.checked});
这就是getSales(分组);
};
OnClick处理程序():

handleSearch=()=>{
const{grouping}=this.state;
this.setState({isLoading:true});
这就是getSales(分组);
};
getSales()

getSales=(分组)=>{
让notttr;
如果(分组===false){
notattr=1
}
else notattr=0
this.setState({isLoading:true})
Axios.get(“/api/report/sales”{
参数:{notattr}
})
.然后(res=>res.data)
。然后((销售)=>{
这是我的国家({
出售,
孤岛加载:false,
HandleGroup:对,
活动页面:1,
当前范围:{
第一:(this.state.itemsPerPage)-this.state.itemsPerPage,
最后:(this.state.itemsPerPage)-1
},
订购人:“”
})
})
.catch((错误)=>{
this.setState({isLoading:false})
console.log(错误)
})
};
基本问题场景1:
1) 我正在打开一页
-屏幕中的复选框
true

2) 我点击搜索按钮
-API发送
noattr:0
,因为
分组:true

3) 现在,我想点击复选框
-API仍然发送
noattr:0
,因为
分组:true
(但我期望
分组:false
值)
4) 如果我稍后处理复选框,它将工作,反之亦然。但如果我处理搜索按钮,它将发送OK信息。
很明显,有些地方有点小错误,但我尝试了很多不同的组合,似乎没有找到正确的组合

      onGroupingChange = (e) => {
         const {grouping} = this.state;
        this.setState({ grouping: e.target.checked});
             this.getSales(grouping);
    };
我想你应该这样打电话: this.getSales(e.target.checked)


您正在使用以前的值而不是更新的值调用getSales函数。

可能与我要查找的完全相同。我是“硬编码”:
this.getSales(!grouping)
可以避免此问题,但您的解决方案可能更好。谢谢