当前位置: 首页 > 知识库问答 >
问题:

将React组件从函数重构为ES6类

姬振
2023-03-14

我是ES6新手。在编写React组件的不同方法上有点困惑。我从“react.createClass”开始,然后使用ES6类语法移到“extends react.component”。

import React, { PropTypes } from 'react'

const Todo = ({ onClick, completed, text }) => (
    <li onClick={onClick} style={{ textDecoration: completed ? 'line-through' : 'none' }} >
        {text}
    </li>
)

Todo.propTypes = {
    onClick: PropTypes.func.isRequired,
    completed: PropTypes.bool.isRequired,
    text: PropTypes.string.isRequired
}

export default Todo

共有1个答案

司徒宇
2023-03-14

对于您的组件,实际上最好使其成为一个纯函数,而不是一个ES6类,因为它可以作为其props的函数呈现,并且不维护状态。不过,您仍然可以使用ES6语法(导出、箭头函数等)。

Facebook的解释是:“在理想的情况下,你的大多数组件都是无状态函数,因为将来我们还可以通过避免不必要的检查和内存分配来对这些组件进行性能优化。如果可能的话,这是推荐的模式。”

import { PropTypes } from 'react'

function Todo = (props) => (
    <li onClick={props.onClick} style={{ textDecoration: props.completed ? 'line-through' : 'none' }} >
        {props.text}
    </li>
)

Todo.propTypes = {
    onClick: PropTypes.func.isRequired,
    completed: PropTypes.bool.isRequired,
    text: PropTypes.string.isRequired
}

export default Todo
 类似资料:
  • 本文向大家介绍利用ES6语法重构React组件详解,包括了利用ES6语法重构React组件详解的使用技巧和注意事项,需要的朋友参考一下 一、创建组件 ES6 class创建的组件语法更加简明,也更符合javascript。内部的方法不需要使用function关键字。 React.createClass React.Component(ES6) 二、属性 props propTypes and ge

  • 我有以下react功能组件来帮助支持react路由器所需的身份验证路由。 我需要将其从功能组件转换为类组件,以便利用React.component的componentDidMount方法。不幸的是,我很难弄清楚如何迁移它。如果我照原样做,我需要复制组件和…rest参数,但我不知道怎么做。我想我可以用这个.props.Component获得组件参数,但我不确定如何拉…rest。我是JSX和ES6的新

  • > 在ES6中直接初始化类上的属性是不可能的,目前只能用这种方式声明方法。同样的规则也存在于ES7中。 https://stackoverflow.com/a/38269333/4942980 render方法中的一个函数将在每个呈现中创建,这对性能有一点影响。如果你把它们放在渲染图中也很乱 ...更喜欢只将专门处理呈现组件和/或JSX的函数放在render中(即,在prop上进行映射,根据pro

  • 我想从父react组件中的导入组件调用一个函数。 不幸的是,所有的教程都是关于面向对象的react组件的。

  • 我有下面的类组件- https://pastebin.com/WigZksAq 我想将面板移动到单独的文件中- 但是我不明白如何修改主类组件的状态。

  • 问题内容: 在花了一些时间学习React之后,我了解了创建组件的两个主要范例之间的区别。 我的问题是,什么时候应该使用哪个?为什么?一个人相对于另一个人的利益/取舍是什么? ES6课程: 功能性: 我认为只要没有状态可以由该组件操纵,功能就可以了,是吗? 我猜如果我使用任何生命周期方法,最好使用基于类的组件。 问题答案: 你有正确的主意。如果您的组件只做一些道具和渲染,那么功能就可以了。您可以将它