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

反应,使用扩展类创建组件和简单const =函数之间的差异

游乐池
2023-03-14
问题内容

在反应教程中:

https://egghead.io/lessons/javascript-redux-react-todo-list-example-
filtering-todos

有主要组件创建与扩展:

class TodoApp extends Component {
  render() {
    const visibleTodos = getVisibleTodos(
      this.props.todos,
      this.props.visibilityFilter
    );
    .
    . // Input and Button stuff
    .

而另一个组件就像一个包含函数的const一样创建:

const FilterLink = ({
  filter,
  children
}) => {
  return (
    <a href='#'
       onClick={e => {
         e.preventDefault();
         store.dispatch({
           type: 'SET_VISIBILITY_FILTER',
           filter
         });
       }}
    >
      {children}
    </a>
  )
}

我看到的区别是,首先使用class创建的函数使用了render函数,另一个则使用return函数将模板发回。

有什么区别?我听说将来只有扩展Component才允许使用组件?


问题答案:

简短的答案是,您想尽可能多地使用无状态功能组件(SFC)。您的大多数组件应该是SFC。

在以下情况下使用传统Component类:

  • 您需要本地状态(this.setState
  • 你需要一个生命周期挂钩(componentWillMountcomponentDidUpdate,等)
  • 您需要通过ref访问后备实例(例如<div ref={elem => this.elem = elem}>


 类似资料:
  • 我看到的区别是,首先用类创建的是一个呈现函数,而另一个是一个返回函数来发回模板。 有什么不同?我听说将来的组件只允许使用扩展组件?

  • 有人能解释一下 和 我不知道确切的意思。

  • 我真的不知道react router中render和component prop in Route之间的区别,在文档中它说render不创建新元素,但component创建新元素,我试图返回历史,但我发现在使用render in Route时调用componentWillMount,“如果为组件属性提供内联函数,则在每次渲染时都会创建一个新组件。这将导致现有组件卸载和新组件装载,而不仅仅是更新现有

  • 问题内容: 建立: BabelJS(ES2015,React,Stage-1) Webpack React / Redux CommonJS和ES6的新功能。我知道对象实例和方法的静态容器之间的区别,但是我不确定它们分离到模块后的行为。所以我想知道返回实例之间有什么区别(此模式完全有效吗?): 并导出const方法: 方法A:每次导入时都会有一个新实例吗? 方法B:使用对象分解功能的好处之一: 然

  • 问题内容: 随着React 中钩子的引入,现在的主要困惑是何时将函数组件与钩子和类组件一起使用,因为在钩子的帮助下,甚至可以在函数组件中获得和部分使用。所以,我有以下问题 钩子的真正优点是什么? 何时使用带有钩子的函数组件和类组件? 例如,带有钩子的功能组件不能像类组件那样帮助性能。他们没有执行就不能跳过重新渲染。还有其他原因吗? 提前致谢。 问题答案: 引入和其他特性(例如和)的思想是帮助减少必

  • 当用户查看我们的租借列表时,他们可能希望有一些交互式选项来帮助他们作出决定。让我们添加切换每个租赁图像大小的功能。为此,我们将使用一个组件。 我们生成一个rental-listing组件来管理我们每个租赁的行为。每个组件名称中都要有一个破折号,来避免与可能的HTML元素冲突,因此命名rental-listing允许,受但命名rental不允许。 生成一个组件: $ ember g componen