Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.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
onClick不更改REACTJS中的useState_Reactjs - Fatal编程技术网

onClick不更改REACTJS中的useState

onClick不更改REACTJS中的useState,reactjs,Reactjs,当我单击closeBet方法时,它似乎不会触发任何东西。有人能解释一下原因吗?我想我只是不明白为什么工作不正常。而且,即使是另一个useState isActive也没有完成它的工作。那么我应该怎么做才能在单击后正确地更改useState。提前谢谢 import React, { useState } from 'react'; import Button from '@material-ui/core/Button'; import FilterMenu from "./select

当我单击closeBet方法时,它似乎不会触发任何东西。有人能解释一下原因吗?我想我只是不明白为什么工作不正常。而且,即使是另一个useState isActive也没有完成它的工作。那么我应该怎么做才能在单击后正确地更改useState。提前谢谢

import React, { useState } from 'react';
import Button from '@material-ui/core/Button';
import FilterMenu from "./selectButton";
import FetchRandomBet from "./fetchRandomBets";

function Betslip() {
    const data = [
        {
            value: 0,
            label: "No Filter"
        },
        {
            value: 1,
            label: "Less than two"
        },
        {
            value: 2,
            label: "More than two"
        },
    ]

    const [selectedValue, setSelectedValue] = useState(0);
    const [allStakes, setAllStakes] = useState(null);
    const [isActive, setActive] = useState("false");

    const handleChange = obj => {
        setSelectedValue(obj.value);
    }

    const betNow = () => {
        if (!allStakes) {
            const stakes = localStorage.getItem("stakes");
            const jsnStake = JSON.parse(stakes) || [];
            setAllStakes([jsnStake]);
            setActive(isActive);
            console.log('yes')
        } else if (allStakes) {
            localStorage.setItem("stakes", null);
            setAllStakes([])
            console.log('no')
        }
    }

    const closeBet = () => {
        setActive("false");
    }

    console.log(allStakes)

    return (
        <div className="betslip">
            <div className="betslip-top">
                <h1 className="text">BETSLIP</h1>
                <p className="text-two">BET WITH US!</p>
                <div>
                    <FilterMenu
                        optionsProp={data}
                        valueProp={selectedValue}
                        onChangeProp={handleChange}
                    />
                </div>
            </div>
            <div>
                <FetchRandomBet
                    valueProp={selectedValue}
                />
            </div>
            <Button
                onClick={betNow}
                className="betnow"
                variant="contained"
            >
                Bet Now!
                </Button>
            <div className={isActive ? "bet-show" : "bet-noshow"}>
                <button
                    onClick={closeBet}>
                    x
                </button>
                <h1>
                    {allStakes}
                </h1>
            </div>
        </div >
    );
}

export default Betslip;
import React,{useState}来自“React”;
从“@material ui/core/Button”导入按钮;
从“/selectButton”导入过滤器菜单;
从“/fetchRandomBets”导入FetchRandomBet;
函数Betslip(){
常数数据=[
{
值:0,
标签:“无过滤器”
},
{
价值:1,
标签:“少于两个”
},
{
价值:2,
标签:“两个以上”
},
]
常量[selectedValue,setSelectedValue]=使用状态(0);
常量[AllStacks,SetAllStacks]=useState(null);
const[isActive,setActive]=useState(“false”);
常量handleChange=obj=>{
设置选定值(目标值);
}
常数betNow=()=>{
如果(!所有股份){
const stacks=localStorage.getItem(“stacks”);
const jsnStake=JSON.parse(木桩)| |[];
设置所有桩号([jsnStake]);
setActive(isActive);
console.log('yes')
}否则,如果(所有股份){
setItem(“木桩”,null);
设置所有桩号([])
console.log('no')
}
}
const closeBet=()=>{
setActive(“假”);
}
console.log(所有桩)
返回(
贝特利普

与我们打赌

现在打赌! x {allstacks} ); } 出口违约金;
您使用的是
字符串
而不是
布尔值
作为isActive状态。应该是这样的:

const[isActive,setActive]=useState(false)

更新状态时:

const closeBet = () => {
   setActive(false);
}

删除
false
值周围的引号,该值应按预期工作。

您可能希望将该值设置为
false
,因此不应使用引号,因为它会变成字符串

setActive(假);