Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Can';t在React Hook中的onClick函数中设置状态_Reactjs_React Hooks - Fatal编程技术网

Reactjs Can';t在React Hook中的onClick函数中设置状态

Reactjs Can';t在React Hook中的onClick函数中设置状态,reactjs,react-hooks,Reactjs,React Hooks,嗨,我无法使用我为onClick定义的函数在中设置状态。除设置状态外,其他所有线路均正常工作 export default function SaleProducts(props) { const [currentSelected, setSelected] = useState(props.location.state.pid); useEffect(() => { superagent .post("url") .se

嗨,我无法使用我为onClick定义的函数在中设置状态。除设置状态外,其他所有线路均正常工作

export default function SaleProducts(props) {
     const [currentSelected, setSelected] = useState(props.location.state.pid);

     useEffect(() => {
       superagent
        .post("url")
        .set("Content-Type","application/x-www-form-urlencoded")
        .send({"access_token":token})
        .set('accept', 'json')
        .end((error, response) => {
          if(error){
            console.log("Error")
          }
          else{
            var json = response.body;
            json.products.map((res) => {
            var array = [res.title,"Not yet published",res.variants[0].price,<Button onClick={(event) => handleItemDeletion(event,res.id)}>Delete Item</Button>];
            arr.push(array);
          })
     ,[currentSelected]}

     const handleItemDeletion = (event,id) =>{
       event.preventDefault();
       var cSelected = currentSelected.replace(id,'');
       setSelected((currentSelected) => cSelected);         //this is not working
       console.log("Current Selected : ",currentSelected)        
     }

     return(<arr>);    //this is only for representation
导出默认功能产品(道具){
const[currentSelected,setSelected]=useState(props.location.state.pid);
useffect(()=>{
超级药剂
.post(“url”)
.set(“内容类型”、“应用程序/x-www-form-urlencoded”)
.send({“访问令牌”:令牌})
.set('accept','json')
.end((错误、响应)=>{
如果(错误){
console.log(“错误”)
}
否则{
var json=response.body;
json.products.map((res)=>{
var数组=[res.title,“尚未发布”,res.variants[0]。price,handleItemDelete(event,res.id)}>Delete Item];
arr.push(阵列);
})
,[currentSelected]}
常量handleItemDelete=(事件,id)=>{
event.preventDefault();
var cSelected=currentSelected.replace(id.);
setSelected((currentSelected)=>CSSelected);//这不起作用
日志(“当前选定:”,当前选定)
}
return();//这仅用于表示

OnClick函数正在被调用,但只有setSelected行不起作用。状态没有改变,仍然像以前一样。

您应该将值传递给
setSelected
,而不是函数。类似这样的内容:
setSelected(cSelected);

您应该将值传递给
setSelected
,而不是一个函数。类似于:
setSelected(cSelected);
设置状态不正确。请尝试此操作

export default function SaleProducts(props) {
     const [currentSelected, setSelected] = useState(props.location.state.pid);

     useEffect(() => {
       superagent
        .post("url")
        .set("Content-Type","application/x-www-form-urlencoded")
        .send({"access_token":token})
        .set('accept', 'json')
        .end((error, response) => {
          if(error){
            console.log("Error")
          }
          else{
            var json = response.body;
            json.products.map((res) => {
            var array = [res.title,"Not yet published",res.variants[0].price,<Button onClick={(event) => handleItemDeletion(event,res.id)}>Delete Item</Button>];
            arr.push(array);
          })
     ,[currentSelected]}

     const handleItemDeletion = (event,id) =>{
       event.preventDefault();
       var cSelected = currentSelected.replace(id,'');
       setSelected(cSelected);         // check here
       console.log("Current Selected : ",currentSelected)        
     }

     return(<arr>);
导出默认功能产品(道具){
const[currentSelected,setSelected]=useState(props.location.state.pid);
useffect(()=>{
超级药剂
.post(“url”)
.set(“内容类型”、“应用程序/x-www-form-urlencoded”)
.send({“访问令牌”:令牌})
.set('accept','json')
.end((错误、响应)=>{
如果(错误){
console.log(“错误”)
}
否则{
var json=response.body;
json.products.map((res)=>{
var数组=[res.title,“尚未发布”,res.variants[0]。price,handleItemDelete(event,res.id)}>Delete Item];
arr.push(阵列);
})
,[currentSelected]}
常量handleItemDelete=(事件,id)=>{
event.preventDefault();
var cSelected=currentSelected.replace(id.);
setSelected(cSelected);//检查这里
日志(“当前选定:”,当前选定)
}
return();

设置状态不正确。请尝试此操作

export default function SaleProducts(props) {
     const [currentSelected, setSelected] = useState(props.location.state.pid);

     useEffect(() => {
       superagent
        .post("url")
        .set("Content-Type","application/x-www-form-urlencoded")
        .send({"access_token":token})
        .set('accept', 'json')
        .end((error, response) => {
          if(error){
            console.log("Error")
          }
          else{
            var json = response.body;
            json.products.map((res) => {
            var array = [res.title,"Not yet published",res.variants[0].price,<Button onClick={(event) => handleItemDeletion(event,res.id)}>Delete Item</Button>];
            arr.push(array);
          })
     ,[currentSelected]}

     const handleItemDeletion = (event,id) =>{
       event.preventDefault();
       var cSelected = currentSelected.replace(id,'');
       setSelected(cSelected);         // check here
       console.log("Current Selected : ",currentSelected)        
     }

     return(<arr>);
导出默认功能产品(道具){
const[currentSelected,setSelected]=useState(props.location.state.pid);
useffect(()=>{
超级药剂
.post(“url”)
.set(“内容类型”、“应用程序/x-www-form-urlencoded”)
.send({“访问令牌”:令牌})
.set('accept','json')
.end((错误、响应)=>{
如果(错误){
console.log(“错误”)
}
否则{
var json=response.body;
json.products.map((res)=>{
var数组=[res.title,“尚未发布”,res.variants[0]。price,handleItemDelete(event,res.id)}>Delete Item];
arr.push(阵列);
})
,[currentSelected]}
常量handleItemDelete=(事件,id)=>{
event.preventDefault();
var cSelected=currentSelected.replace(id.);
setSelected(cSelected);//检查这里
日志(“当前选定:”,当前选定)
}
return();

是的,这解决了问题。谢谢。但我在其他地方也用过类似的方法,而且通常有效。是的,这解决了问题。谢谢。但我在其他地方也用过类似的方法,而且通常有效。