不要扩展React.Component

时间:2016-03-29 23:02:28

标签: reactjs ecmascript-6

用于创建React组件的es6语法是export default class ExampleComponent extends React.Component。但是export default class ExampleComponent在没有extends React.Component的条件下import React from 'react';为什么会这样?

2 个答案:

答案 0 :(得分:2)

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

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

希望有所帮助!

答案 1 :(得分:1)

您正在创建一个“纯粹的”JavaScript class,但是一旦它没有扩展React.Component,您将无法访问特定的React行为。检查how extends work