我有一个简单的复选框组件:
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;
但是,切换复选框会产生以下错误:
警告:setState(...):只能更新已安装或已安装 零件。这通常意味着您在已卸载时调用了setState() 零件。这是一个无操作。请检查复选框的代码 成分
创建受控组件时我是否遗漏了什么?
答案 0 :(得分:0)
将handlecheckbox方法移动到渲染之外(在构造函数和渲染之间)会发生什么?
答案 1 :(得分:0)
想出来,这是react-hot-loader
的一个问题。显然保存this
的值在react-hot-loader
的构造函数中不起作用。修复方法是手动启用babelrc中的transform-es2015-classes
插件。我以前遇到过这个问题,但它消失了,所以我认为它已经修复了,但是它又随机弹出了。