函数式组件

Posted 剑指前端

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数式组件相关的知识,希望对你有一定的参考价值。

       一般,在一个文件中,我们应该只写一个类组件,其他子组件最好是函数式组件,但是用 javascript 实现的函数式组件不能访问 this.refthis.state ,而且也没有生命周期钩子函数,所以在 typescript 中官方还提供了 React.FC<> 来创建函数式组件,它是 typescript 中的一个泛型,这个泛型提供了:

1、userState

实现 this.state 以及 this.setState()


2、useEffect

实现 componentWillUnmonutcomponentDidMount componentDidUpdate 的效果,useEffect 接受一个回调函数,这个回调函数内代码会在 componentDidMountcomponentDidUpdate 时执行。回调函数的返回值应该是一个函数,这个函数会在 componentWillUnmount 被执行。


3、useRef

实现 this.ref创建的对象.current 就是被我们绑定的元素

下面举个例子说明用法(代码不完整,只需关注局部)

import React, {useRef, useState, useEffect} from 'react';import ProTable, { ActionType } from '@ant-design/pro-table';import { getRegions } from '@/utils/region'......
const TableList: React.FC<{}> = () => {  const actionRef = useRef<ActionType>();  // 数据状态  const [selectedId, setSelectedId] = useState<number>();  const [addVisible, setAddVisible] = useState<boolean>(false);  const [region, setRegion] = useState<[]>(); ......   useEffect(() => {    getRegions().then((res) => {      setRegion(res);    });  }, []); ...... const addClose = (ok) => { if (ok) {      actionRef.current.reload();    }    setAddVisible(false);  } // 显示内容  return ( <ProTable {...defaultTableProps} rowKey='id' actionRef={actionRef} beforeSearchSubmit={beforeSearchSubmit} request={request} columns={columns} search={{optionRender}} />      <AddDrawer visible={addDrawerVisible} onClose={ addClose }/>  );}export default TableList;



以上是关于函数式组件的主要内容,如果未能解决你的问题,请参考以下文章

react讲解(函数式组件,react hook)

react讲解(函数式组件,react hook)

react讲解(函数式组件,react hook)

web代码片段

VSCode自定义代码片段—— 数组的响应式方法

VSCode自定义代码片段10—— 数组的响应式方法