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

时间:2018-06-27 05:13:05

标签: javascript reactjs

我是反应的新手,我想清楚地知道要使用哪种组件,当涉及到组件时,我会看到有两种类型。

功能组件:

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;

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

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

为什么应该尽可能使用功能组件,有什么好处?

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

1 个答案:

答案 0 :(得分:5)

类组件

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

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

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

功能组件

  • 功能组件比基于类的功能更简单。

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

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

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