在 React 中,如何考虑在 class 组件内部和 class 组件外部定义功能组件?

How to consider defining a functional component inside a class component and outside the class in React?

考虑在React中定义函数式组件的以下三个地方 -

  1. 在 class 内部(在 render 方法之外)
  2. 在 class 内部(在 render 方法内部)
  3. 外class

在下面的示例代码中,funcComponent1funcComponent2funcComponent3 定义在三个不同的位置。我如何考虑何时在这 3 个地方定义功能组件?

import React, { Component } from 'react';


const FuncComponent1 = (props) => {
  return (
    <p>{props.name}</p>
  )
}

class TestComponent extends Component {

  constructor(props){
    super(props);
    this.state = {
      name: "JavaScript"
    }
  }


  FuncComponent2 = (text) => {
    return (
      <p>{text}, {this.state.name}</p>
    )
  }


  render(){

    const FuncComponent3 = (props) => {
      return (
        <p>{props.text}, {this.state.name}</p>
      )
    }

    return (
      <div>
        <FuncComponent1 name={'Abrar'} text={'Hello World'}/>
        <FuncComponent3 text={"HEllo World"}/>
      </div>
    )
  }

}

export default TestComponent;

您必须避免使用 functional component inside of render,因为它们将在每次渲染时重新创建。

就使用 functions that return JSX inside Class component 但考虑外部 render` 而言,当您想使用 class 的状态或道具来渲染 JSX 内容时,您可以这样做,但是对特定 class

非常具体的内容

当同一个组件可以在多个地方使用时,functional component outside of React component 是最有利的,因此将道具传递给它并渲染它是有意义的。