阵营简单CheckBox组件 - 警告:的setState(...):只能更新一安装或安装组件

问题描述:

我有一个简单的CheckBox组件:阵营简单CheckBox组件 - 警告:的setState(...):只能更新一安装或安装组件

import React, { Component } from 'react'; 

class Checkbox extends Component { 
    constructor(props) { 
    super(props); 

    this.state = { isChecked: false }; 

    this.handleCheckboxChange = this.handleCheckboxChange.bind(this); 
    } 

    render() { 
    return (
     <div className="checkbox"> 
     <input type="checkbox" checked={this.state.isChecked} onChange={this.handleCheckboxChange} /> 
     Checkbox 
     </div> 
    ); 
    } 

    handleCheckboxChange(e) { 
    this.setState({ isChecked: e.target.checked }); 
    } 
} 

export default Checkbox; 

然而,切换复选框产生以下错误:

Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op. Please check the code for the Checkbox component.

我在创建受控组件时错过了什么吗?

+0

你有一个小提琴吗?您的复选框组件代码看起来没问题。这可能与其他控件有关。 – hazardous

+0

是啊,看起来很好,我也很好https://codepen.io/anon/pen/qXJvwm所以你问题是在某个地方的上游链 – varren

想通了,这是react-hot-loader的问题。显然保存this的值在react-hot-loader的构造函数中不起作用。修复方法是在babelrc中手动启用transform-es2015-classes插件。之前我曾经遇到过这个问题,但是它已经消失了,所以我认为它已经修复了,但它会随机弹出。

当您在渲染之外移动handlecheckbox方法(在构造函数和渲染之间)时会发生什么?