当前位置: 首页 > 面试题库 >

React.createClass与ES6箭头函数

东门宜
2023-03-14
问题内容

我是React的新手,正在尝试了解语法。

我正在React 15环境中进行开发(使用html" target="_blank">react-starterify模板),并且一直在使用下面的VERSION
2中的语法,但是,我在Facebook的React页面上发现的大多数示例和教程都是VERSION 1。这两个,何时应在另一个之上使用?

版本1

var MyComponent = React.createClass({
  render: function() {
    return (
      <ul>
        // some list
      </ul>
    );
  }
});

module.exports = MyOtherComponent;

版本2

const MyComponent = () => (
  <ul>
    // some list
  </ul>
);

export default MyComponent;

问题答案:

第二个代码是 无状态功能组件, 并且是用于将组件定义为的函数的新语法/模式props。它是在React v0.14中引入的。

您可以在官方的React Blog,
此处
的官方React文档,
此处了解更多信息

这些组件的行为就像只定义了render方法的React类。由于没有为功能组件创建组件实例,因此添加到其中的任何引用都将评估为null。功能组件没有生命周期方法,但是您可以在函数上设置
.propTypes.defaultProps作为属性。

此模式旨在鼓励创建这些简单的组件,这些组件应包含应用程序的大部分。将来,通过避免不必要的检查和内存分配,我们还将能够针对这些组件进行性能优化。

  • 有什么不同?

这种模式与“传统”模式类似,不同之处在于您使用的是简单函数而不是类中定义的方法。当您要从类中提取函数时(例如,出于可读性和清洁性考虑),这可能很有用。

需要注意的重要一件事是功能组件就是 功能
。这不是一堂课。因此,没有全局this对象。这意味着当您执行a时,render您基本上是在创建a的新实例ReactComponent,从而排除了这些javascript对象通过某种global相互通信的可能性this。因此,这也使得state不可能使用任何生命周期方法。

  • 我的应用程序如何从中受益?

性能
当您使用无状态功能组件时,React非常聪明,可以省略所有“传统”生命周期方法,事实证明,该方法提供了大量的优化。React团队已经表示,他们计划在将来实现进一步的优化,以进行内存分配并减少检查次数。

适应性
因为我们只在谈论一个函数(而不是一个类),所以我们不必担心state,生命周期方法或其他依赖项。给定参数,该函数将始终提供相同的输出。这样,很容易在任何地方调整这些组件,这也使测试更加容易。

使用React的无状态功能组件,可以轻松地对每个组件进行隔离测试。不需要模拟,状态操纵,特殊的库或棘手的测试工具。

鼓励最佳实践
React通常被与MVC模式的 V
进行比较,因为它是用于创建视图的。创建组件的“传统”方式使将业务逻辑(例如通过stateref)“侵入”
真正只应处理渲染逻辑的组件变得容易。他们鼓励懒惰并写臭代码。但是,无状态功能组件几乎不可能采取这样的捷径并强制采用更好的方法。

  • 我什么时候应该使用另一个?

通常,建议尽可能使用新模式!如果只需要一个render方法,而没有生命周期方法或state,则使用此模式。当然,有时候您 确实
需要使用state,在这种情况下,您可以使用传统模式。

Facebook建议在呈现静态表示组件时使用无状态组件。然后,如果需要某种状态,只需将其包装在有状态的组件中,即可通过使用状态并将其state发送props给无状态组件来对其进行管理。



 类似资料:
  • 新的“胖箭头”符号还可以用更简单的方式来定义匿名函数。 请看下面的例子: console.log(x); incrementedItems.push(x+1); }); 计算一个表达式并返回值的函数可以被定义更简单: 下面代码与上面几乎等价: incrementedItems = items.map(function (x) { return x+1; 让我们在 验

  • 主要内容:1.语法变化,2.带参数的箭头函数,3.带有默认参数的箭头函数,4.带有Rest参数的箭头函数,5.无括号的箭头函数,6.箭头函数的优点ES6中引入了箭头(Arrow)函数,它提供了一种更准确的JavaScript编写方法。 它们让我们能够编写较小的函数语法。 箭头函数的代码更具可读性和结构性。 箭头函数是匿名函数(没有名称且未与标识符绑定的函数)。 它们不返回任何值,并且可以在不使用关键字的情况下进行声明。 箭头函数不能用作构造函数。 箭头函数中的上下文是按词汇或静态方式定义的。 它

  • 本文向大家介绍ES6箭头函数的特性?相关面试题,主要包含被问及ES6箭头函数的特性?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: ES6 增加了箭头函数,基本语法为 let func = value => value; 相当于 let func = function (value) { return value; }; 箭头函数与普通函数的区别在于: 1、箭头函数没有this,所以需要通

  • 问题内容: class App extends Component { constructor(props) { … } 在类中声明的两种函数 (onChange和onSubmit) 之间有什么区别?如果我将其声明为ES6类方法,但在 const url中 引用this.sate时出现错误,但是将其更改为arrow函数可以解决此问题。 我想知道两种情况下如何正确处理“ this” 另外,我该如何做

  • 本文向大家介绍JavaScript ES6箭头函数使用指南,包括了JavaScript ES6箭头函数使用指南的使用技巧和注意事项,需要的朋友参考一下 胖箭头函数(Fat arrow functions),又称箭头函数,是一个来自ECMAScript 2015(又称ES6)的全新特性。有传闻说,箭头函数的语法=>,是受到了CoffeeScript 的影响,并且它与CoffeeScript中的=>语