reactjs - onClick 不改变 REACTJS 中的 useState

标签 reactjs

当我点击 closeBet 方法时,它似乎没有触发任何东西。谁能解释我为什么吗?我认为我正确地实现了一切,只是不明白为什么不能正常工作。此外,即使其他 useState isActive 也没有完成其工作。那么我应该怎么做才能正确更改 onClick 的 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;

最佳答案

您正在使用 string 而不是 boolean 值来表示 isActive 状态。应该是这样的:

const [isActive, setActive] = useState(false);

更新状态时:

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

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

关于reactjs - onClick 不改变 REACTJS 中的 useState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67439303/

相关文章:

javascript - React/JSX 动态组件数量

javascript - react 条件渲染

javascript - 语义 UI 中的格式化工具提示

javascript - 向 React 应用程序添加一些服务器端动态客户端 JavaScript

javascript - React 只更新一个对象的状态

design-patterns - Reactjs Redux 我们应该为状态树中的每个对象创建子 reducer 吗?

javascript - 将图像上传到 Cloudinary Express.js React Axios post 请求

javascript - 有没有办法在 react 传单的标记上添加徽章?

sockets - React + Sails + Socket.io

javascript - Chrome 扩展 : Getting a variable from background. js 到 popup.js