不要扩展 React.Component

Gui*_*chi 5 ecmascript-6 reactjs

用于创建 React 组件的 es6 语法是 。export default class ExampleComponent extends React.Component但是它仍然可以在export default class ExampleComponent没有extends React.Component条件的情况下工作import React from 'react';为什么会这样

mar*_*mas 5

在这种情况下很容易错过正在发生的事情,但差别真的很大:没有扩展 React.Component,你只是创建了一个 JS 类。此外:

  • 因为它满足 React 类的要求(您可以使用任React.createClass()一类或作为 ES6 类创建),它仍然可以“工作”,
  • 但是你不会得到 lifeCyle 方法或访问状态(如果我错了,有人纠正我,很确定你不会只用一个类 bc 没有附加的支持实例)。
  • 这些“更简单”的组件对于 React 来说通常处理得更快并且需要更少的“机器”,因为它们只是一个(希望)呈现某些东西的纯函数。
  • 所以,它们在这里的主要区别在于,只有一个具有渲染方法的类,您就不会“要求”那么多。大多数时候这应该足够了;您不需要访问state所有内容

希望有帮助!