javascript - 在 React 组件中使用 constructor 和 state = {} 声明状态有什么区别?

标签 javascript reactjs ecmascript-6 class-fields

我发现有两种方法可以在类组件中声明状态,如下所示

class App extends Component {
    constructor(props) {
        super(props);
        this.state = {
            name: 'John'
        }
    }

    render() {
        return  <div>{this.state.name}</div>
    }

}

class App extends Component {
    state = {
       name: 'John'
    }

    render() {
        return  <div>{this.state.name}</div>
    }

}

这两者有什么区别?

最佳答案

它们大致相当。显着的区别在于第二个示例中的初始化程序在构造函数之前执行。

第二种方法使用 class fields提案。

它还不是 ECMAScript 标准的一部分,因此您需要正确设置转译器才能使用第二种方法。

UPD 看看 Babel output更好地了解公共(public)实例字段的工作原理。

关于javascript - 在 React 组件中使用 constructor 和 state = {} 声明状态有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45451141/

相关文章:

javascript - 将数据从一个 HTML 文件传输到另一个

javascript - Bootstrap 轮播不工作(它不滑动)

reactjs - 如何更改 React Material UI 上的 Stepper 颜色?

javascript - create-react-app 不获取 .env 文件

javascript - 已弃用的 Javascript RegExp 属性的替代方案

javascript - Node.js 和 Zaproxy UnhandledPromiseRejectionWarning : RequestError: Error: socket hang up

php - Jquery/Javascript 从 PHP 范围问题获取信息?

javascript - 使用 css 透视图检测滚动行为

reactjs - 在 React 组件中保留与 ui 相关的强状态是一种不好的做法吗?

javascript - 解构 JS 中的不同类型