为什么我们在react组件中使用由super.setState()插入的this.setState()

Yazan Khateeb

我是react的新手,我注意到我们使用this.setState()而不是使用super.setState()我需要明确说明为什么我们使用它来调用超类方法?例如:

class Checkbox extends React.Component {
        constructor(props) {
            super(props)
            this.state = {
                checked: true
            }
            this.handleCheck = this.handleCheck.bind(this)
        }

        handleCheck() {
            this.setState({
                checked: !this.state.checked
            })
        }

        render() {
            var msg 
            if(this.state.checked) {
                msg = "checked"
            } else {
                msg = "not checked"
            }
            return (
                <div>
                    <input type="checkbox" 
                           onChange={this.handleCheck}
                           defaultChecked={this.state.checked}/>
                    <p>This box is {msg}</p>
                </div>
            )
        }
    }       
那将是烧瓶

这就是JavaScript继承的工作方式。Checkbox子类的实例原型地继承自React.Component父类this.setState === super.setState

super.method 仅在子类中被覆盖时才应引用它,它通常发生在被覆盖的方法本身中:

method() {
  super.method(); // inherit the behaviour from parent class
  // do something else
}

否则,super.method()可以将的使用视为语义错误,这表明开发人员并不了解继承机制。如果稍后将覆盖某个方法,则由于该原因该方法将不再使用(尽管在情况下不太可能使用setState)。

使用super.method()还要求开发人员知道父类的实现。正如在解释这个答案,只有父母的原型方法,但不是实例方法可作为super如果父类具有实例方法,

method = () => {...}

子类将继承它,this.method不会继承super.method

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Javascript

如何使用setState插入React的状态数组?

来自分类Dev

为什么setState在循环中插入重复值

来自分类Dev

为什么我的组件在 setState 之前呈现?

来自分类Dev

在 ListView 中使用 setState

来自分类Dev

在setState中使用Navigator

来自分类Dev

React:我们怎么知道在setState()之后已经挂载/渲染了所有组件?

来自分类Dev

我正在尝试在React中使用setState

来自分类Dev

反应:为什么我们在setState中有回调?

来自分类Dev

挣扎于 REACT (setState())

来自分类Dev

React Native:setState延迟

来自分类Dev

React setState不是函数

来自分类Dev

React Native setState 闪烁

来自分类Dev

使用异步setState

来自分类Dev

使用setState反应错误

来自分类Dev

setState 使用 prevState 失败

来自分类Dev

setState对FutureBuilder的使用

来自分类Dev

无法使用axios setState

来自分类Dev

使用File onLoad的setState

来自分类Dev

如何使用 setState?

来自分类Dev

如何正确使用setState

来自分类Dev

React setState不会更新组件

来自分类Dev

setState为什么要关闭?

来自分类Dev

为什么我的组件在 setState 后不重新渲染?

来自分类Dev

在Flutter中使用setState时?

来自分类Dev

何时在Flutter中使用setState?

来自分类Dev

在表单中使用函数setState

来自分类Dev

在setState中使用变量-反应

来自分类Dev

何时在“setState”中使用对象而不是使用功能“setState”?

来自分类Dev

React Native:使用setState()赋值