A brief discussion on the use of React.FC and React.Component

A brief discussion on the use of React.FC and React.Component

React components can be defined as functions (React.FC<>) or classes (inheriting React.Component).

1. React.FC<>

1. React.FC is a functional component, a generic used in TypeScript. FC is the abbreviation of FunctionComponent. In fact, React.FC can be written as React.FunctionComponent:

const App: React.FunctionComponent<{ message: string }> = ({ message }) => (
  <div>{message}</div>
);

2. React.FC includes PropsWithChildren generics, so you don’t need to explicitly declare the type of props.children. React.FC<> is explicit about the return type, whereas the normal function version is implicit (and would require an additional annotation otherwise).

3. React.FC provides type checking and auto-completion of static properties: displayName, propTypes, and defaultProps (Note: there are some issues with using defaultProps in conjunction with React.FC).

4. When we use React.FC to write React components, we cannot use setState. Instead, we use Hook APIs such as useState() and useEffect.

Example (Ali's Ant Desgin Pro framework is used here for demonstration):

const SampleModel: React.FC<{}> = () =>{ //React.FC<> is a generic type used by typescript const [createModalVisible, handleModalVisible] = useState<boolean>(false); 
   return {
   {/** Trigger modal box **/}
   <Button style={{fontSize:'25px'}} onClick={()=>handleModalVisible(true)} >Example</Button>
   {/** Modal box component **/}
   <Model onCancel={() => handleModalVisible(false)} ModalVisible={createModalVisible} /> 
  }

2. class xx extends React.Component

If you want to define a class component, you need to inherit React.Component. React.Component is a class component. In TypeScript, React.Component is a generic type (aka React.Component<PropType, StateType>), so you provide it with (optional) prop and state type parameters:

Example (Ali's Ant Desgin Pro framework is used here for demonstration):

class SampleModel extends React.Component {
  state = {
    createModalVisible:false,
  };

  handleModalVisible =(cVisible:boolean)=>{
    this.setState({createModalVisible:cVisible});
  };
  return {
  {/** Trigger modal box **/}
   <Button onClick={()=>this.handleModalVisible(true)} >Example</Button>
   {/** Modal box component **/}
   <Model onCancel={() => handleModalVisible(false)} ModalVisible={this.state.createModalVisible} /> 
  }

ps: Simply put, when you don’t know what component type to use, use React.FC.

This concludes this article on the use of React.FC and React.Component in React. For more content about React.FC and React.Component in React, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • A brief discussion on React Component life cycle functions
  • A brief discussion of several ways to create React Component
  • Detailed explanation of several forms of React Component
  • React Stateless Component and Higher-Order Component
  • React styled-components method to set component properties
  • Detailed explanation of the importance and usage of PureComponent in React.js

<<:  Detailed deployment of Alibaba Cloud Server (graphic tutorial)

>>:  Detailed explanation of MySQL startup options and system variables examples

Recommend

Detailed explanation of vite2.0+vue3 mobile project

1. Technical points involved vite version vue3 ts...

How to load third-party component libraries on demand in Vue3

Preface Take Element Plus as an example to config...

VSCode Development UNI-APP Configuration Tutorial and Plugin

Table of contents Written in front Precautions De...

Detailed explanation of Nginx timeout configuration

I recently used nginx in a project, and used Java...

Detailed explanation of adding dotted lines to Vue element tree controls

Table of contents 1. Achieve results 2. Implement...

Tutorial on using the hyperlink tag in HTML

The various HTML documents of the website are con...

mysql data insert, update and delete details

Table of contents 1. Insert 2. Update 3. Delete 1...

Detailed explanation of system input and output management in Linux

Management of input and output in the system 1. U...

Div picture marquee seamless connection implementation code

Copy code The code is as follows: <html> &l...

Four completely different experiences in Apple Watch interaction design revealed

Today is still a case of Watch app design. I love...

MySQL 8.0.19 installation detailed tutorial (windows 64 bit)

Table of contents Initialize MySQL Install MySQL ...

Sample code for modifying the input prompt text style in html

On many websites, we have seen the input box disp...

How to modify the root password of mysql in docker

The first step is to create a mysql container doc...

How to filter out certain libraries during mysql full backup

Use the --all-database parameter when performing ...