gpt4 book ai didi

javascript - 为什么 React.Component 的内部实现是一个函数而不是 ES6 类?

转载 作者:行者123 更新时间:2023-12-02 23:59:15 26 4
gpt4 key购买 nike

我一直在深入研究 React 的 codebase我发现当你编写class App extends React.Component时,你实际上是在扩展由以下函数创建的对象:

function Component (props, context, updater) {
this.props = props;
this.context = context;
this.refs = {};
// We initialize the default updater but the real one gets injected by the
// renderer.
this.updater = updater || ReactNoopUpdateQueue ;
}

Component.prototype.isReactComponent = {};

Component.prototype.setState = function(partialState, callback) {
this.updater.enqueueSetState(this, partialState, callback, 'setState')
}

Component.prototype.forceUpdate = function(callback) {
this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');
}

与仅编写 ES6 类相比,以这种方式创建类有什么优势?

最佳答案

https://caniuse.com/#search=es6%20class

这与浏览器兼容性有关。确保代码可以在不支持 class 语法的地方运行,而不必使用 Babel 之类的东西进行转译。

关于javascript - 为什么 React.Component 的内部实现是一个函数而不是 ES6 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55249313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com