账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    React CheckBox问题
    31
    0

    源码
    https://stackblitz.com/edit/r...

    class App extends Component {
      constructor() {
        super();
        this.state = {
          name: 'React',
          checked:false,
        };
        this.handleChange=this.handleChange.bind(this)
      }
      handleChange(event){
        this.setState({
          checked:event.target.checked
        })
      }
    
      render() {
        return (
          <div>
            <Hello name={this.state.name} />
            <input checked={this.state.checked} onChange={this.handleChange} id='test' type='checkbox' />
            
            <span>color for test</span>
            <div>
              <label for='test' >test's label</label>
              <button onClick={()=>{
                this.setState({
                  checked:undefined
                })
              }}>
                something
              </button>
            </div>
          </div>
        );
      }
    }

    在线演示(支持DevTool)
    https://react-as5oze.stackbli...

    问题是这样的:

    1. 如果this.state.checked一开始是true(蓝色背景),那么我点一下勾选框(this.state.checked为false了),再点一下something按钮,它又变成了蓝色
    2. 如果this.state.checked一开始是false(红色背景),那么我点一下勾选框(this.state.checked为false了),再点一下something按钮,它又变成了红色

    something按钮的功能就是将checked设为undefined,请问这个按钮为什么会出现上述这种看起来像'复原'的功能

    补充(我实际遇到的问题):
    一个设置页,如果用户点击取消则将所有checkbox复原,经过排查发现再复原方法中漏了一个state字段(这就导致这个字段在复原时设为undefined),但是从界面上却是正常效果

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 淚如雨滴_ 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部