reactjs - 取消选中 React 中的复选框后组件状态不会更新

标签 reactjs checkbox components state

我只想使用多个复选框的handleChange 方法更改应用程序的状态。

当我单击每个复选框时,我的状态从 false 更改为 true,但是当我取消选中它时,我的状态不会更改以反射(reflect)它,我似乎无法弄清楚为什么!

import React, { Component } from "react";

export class StepOne extends Component {
    constructor(props) {
        super(props);
        this.state = {
            box1: false,
            box2: false,
            box3: false,
        };
    }

    handleChange = (evt) => {
        const box = evt.target.name;
        this.setState({ [box]: !this.state.box });
    };

    render() {
        return (
            <div>
                <input type="checkbox" name="box1" onChange={this.handleChange} />
                <input type="checkbox" name="box2" onChange={this.handleChange} />
                <input type="checkbox" name="box3" onChange={this.handleChange} />
            </div>
        );
    }
}

最佳答案

当使用点表示法时,编译器会尝试在状态中查找名为 box 的字段,但由于它不存在 - 切换复选框时您不会得到任何结果。

使用括号表示法:

handleChange = (evt) => {
    const box = evt.target.name;
    this.setState((prevState) => ({ 
       [box]: !prevState[box],
    }));
};

注意:设置状态时请考虑使用函数,以确保引用相关状态。

关于reactjs - 取消选中 React 中的复选框后组件状态不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61488100/

相关文章:

reactjs - 单击 <Link> 时,react-router 4 不会重新渲染

javascript - react-hook-form 多步表单问题

javascript - 无法使用 jquery 更新隐藏的复选框名称属性

php - 提交带有空复选框的 HTML 表单

java - Objective-C 中是否有像 Java 一样的自定义组件?

javascript - 获取渲染元素的组件

javascript - react - 类型错误 : Cannot read property 'props' of undefined

reactjs - VSCode - 在文件名更改时更新导入路径?

javascript - 使用 javascript 和 jquery 通过复选框淡入和淡出 <div> 元素

javascript - 无法在react组件中使用setState