• 技术文章 >web前端 >前端问答

    react中使用hook的好处是什么

    青灯夜游青灯夜游2022-03-22 16:23:19原创177

    react中使用hook的好处:1、简化逻辑复用,能更容易复用代码,Hook让开发者可以在无需修改组件结构的情况下复用状态逻辑;2、Hook能够让针对同一个业务逻辑的代码聚合在一块,让业务逻辑清晰地隔离开,让代码更加容易理解和维护。

    本教程操作环境:Windows7系统、react17.0.1版、Dell G3电脑。

    Hook是React 16.8新增的特性,专门用在函数式组件,它可以代替class组件中react的其他特性,是实际工作中要常用到的。

    什么是 Hooks

    Hooks 译为钩子,Hooks 就是在函数组件内,负责钩进外部功能的函数。

    React 提供了一些常用钩子,React 也支持自定义钩子,这些钩子都是用于为函数引入外部功能。

    当我们在组件中,需要引入外部功能时,就可以使用 React 提供的钩子,或者自定义钩子。

    比如在组件内引入可管理 state 的功能,就可以使用 useState 函数,下文会详细介绍 useState 的用法。

    为什么要用 Hooks(使用hook的好处)

    使用 Hooks 有 2 大原因:

    1. 简化逻辑复用,能更容易复用代码

    在 Hooks 出现之前,React 必须借用高阶组件、render props 等复杂的设计模式才能实现逻辑的复用,但是高阶组件会产生冗余的组件节点,让调试更加复杂。

    Hooks 让我们可以在无需修改组件结构的情况下复用状态逻辑。

    举个例子,经常使用的antd-table,用的时候经常需要维护一些状态 ,并在合适的时机去更改它们:

    componentDidMount(){
     this.loadData();
    }
    loadData = ()=>{
       this.setState({
         current: xxx,
         total: xxx,
         pageSize: xxx,
         dataSource: xxx[]
       })
    }
    onTableChange = ()=>{
       this.setState({
         current: xxx,
         total: xxx,
         pageSize: xxx,
       })
    }
    render(){
     const {total,pageSize,current,dataSource} = this.state;
     return <Table
      dataSource={dataSource}
      pagination={{total,pageSize,current}
      onChange={this.onTableChange}
     />
    }

    每个table都要写一些这种逻辑,那还有啥时间去摸鱼。这些高度类似的逻辑,可以通过封装一个高阶组件来抽象它们。这个高阶组件自带这些状态,并可以自动调用server去获取remote data。

    用高阶组件来实现的话会是这样:

    import { Table } from 'antd'
    import server from './api'
    function useTable(server) {
      return function (WrappedComponent) {
        return class HighComponent extends React.Component {
          state = {
            tableProps: xxx, 
          };
          render() {
            const { tableProps } = this.state;
            return <WrappedComponent tableProps={tableProps} />;
          }
        };
      };
    }
    @useTable(server)
    class App extends Component{
      render(){
        const { tableProps } = this.props;
        return (
          <Table 
            columns={[...]}
          // tableProps包含pagination, onChange, dataSource等属性。
            {...tableProps}
          />
        )
      }
    }

    如果用hooks来实现的话,会是:

    import { Table } from 'antd'
    import server from './api'
    function useTable(server) {
      const [tableProps, setTableProps] = useState(xxx);
      return tableProps;
    }
    function App {
        const { tableProps } = useTable();
        return (
          <Table 
            columns={[...]}
          // tableProps包含pagination, onChange, dataSource等属性
            {...tableProps}
          />
        )
    }
    /*

    相对比高阶组件“祖父=>父=>子”的层层嵌套,

    hooks是这样的:

    const { brother1 } = usehook1; 
    const { brother2} = usehook2;
    */

    可以看到,hooks的逻辑更清晰,可读性更好。

    2. 让复杂组件更易理解

    在 class 组件中,同一个业务逻辑的代码分散在组件的不同生命周期函数中,而 Hooks 能够让针对同一个业务逻辑的代码聚合在一块,让业务逻辑清晰地隔离开,让代码更加容易理解和维护。

    【相关推荐:Redis视频教程

    以上就是react中使用hook的好处是什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:react hook
    上一篇:jquery怎么去掉某个字符串 下一篇:node可以使用哪些数据库
    Web大前端开发直播班

    相关文章推荐

    • 带你了解React中的Ref,值得了解的知识点分享• react hook和class的区别有哪些• react渲染方式的几种是什么• react请求数据用什么钩子• react函数组件比类组件的优势在哪

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网