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

基于类的组件与功能性组件有什么区别(Reactjs)

陆琦
2023-03-14
问题内容

我是 React的 新手,我想清楚地知道要使用哪一种,关于组件,我看到有两种类型。

功能组件:

import React from 'react'

const userInput = (props) => {
    return(
        <div>
            <input type='text' onChange={props.nameChanged} value={props.username}></input>
        </div>
    )
};

export default userInput;

基于类的组件:

import React, { Component } from 'react';
import './App.css';
import UserOutput from './UserOutput/UserOutput';
import UserInput from './UserInput/UserInput';

class App extends Component {

  render() {
    return (
      <div className="App">
        <h3>Assignment Output :</h3>
        <ul>
          <li>
            <UserOutput 
            username={this.state.Usernames[0].username}>
            Welcome to React!
            </UserOutput>
            <UserInput 
            nameChanged={this.nameChangedHandler}>
            </UserInput>
          </li>
                      </ul>
      </div>
    );
  }
}

export default App;

我读到我们应该始终尝试使用 功能性组件, 因为它在某些方面有所帮助,并且还听说我们应该尽可能避免使用基于 类的组件

我很困惑哪个是对的,哪个不是。

为什么要尽可能使用功能组件,这样做有什么好处?

我们何时应该选择功能组件,何时不应该,尚不清楚。


问题答案:

类组件

  • 基于类的组件使用ES6类语法。它可以利用生命周期方法。

  • 如您在示例中所见,您在上面给出的Class组件是从React.Component扩展的。

  • 在这里,您必须使用此关键字来访问在类组件内部声明的道具和功能。

功能组件

  • 与基于类的函数相比,功能组件更简单。

  • 功能组件主要关注应用程序的UI,而不关注行为。

  • 更精确地说,这些基本上是类组件中的render函数。

  • 功能组件不能具有状态,也不能使用生命周期方法。



 类似资料:
  • 在花了一些时间学习React之后,我理解了创建组件的两种主要模式之间的差异。 我的问题是什么时候我应该使用哪一个,为什么?一种方法与另一种方法相比有哪些好处/利弊? ES6类: 功能: 我认为只要没有状态可被该组件操纵,就可以正常工作,但就这样吗? 我想如果我使用任何生命周期方法,最好使用基于类的组件。

  • 本文向大家介绍组件和插件有什么区别?相关面试题,主要包含被问及组件和插件有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 组件 (Component) 是用来构成你的 App 的业务模块,它的目标是 App.vue。 插件 (Plugin) 是用来增强你的技术栈的功能模块,它的目标是 Vue 本身。

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

  • 本文向大家介绍展示组件和容器组件有什么区别?相关面试题,主要包含被问及展示组件和容器组件有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 展示组件(Presentational Component) 关注页面的展示效果(外观) 内部可以包含展示组件和容器组件,通常会包含一些自己的DOM标记和样式(style) 通常允许通过this.props.children方式来包含其他组件。 对应用程序

  • 本文向大家介绍受控组件和非受控组件有什么区别?相关面试题,主要包含被问及受控组件和非受控组件有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 受控组件用value和组件的state绑定,当value更新时,会自动更新state 非受控组件没有value,采用ref直接操作dom

  • 问题内容: 从 React v15.3.0 知道,我们有了一个名为 PureComponent 的新基类,以扩展内置的 PureRenderMixin 。我了解的是,在幕后,它对内部的道具进行了浅浅的比较。 现在,我们有3种方法来定义React组件: 功能性无状态组件,不扩展任何类 扩展类的组件 扩展类的常规组件 一段时间以前,我们曾经将无状态组件称为“纯组件”,甚至称为“哑组件”。似乎“纯”一词