首頁 > web前端 > 前端問答 > react中使用hook的好處是什麼

react中使用hook的好處是什麼

青灯夜游
發布: 2022-03-22 16:23:19
原創
4657 人瀏覽過

react中使用hook的好處:1、簡化邏輯復用,能更容易復用程式碼,Hook讓開發者可以在無需修改元件結構的情況下復用狀態邏輯;2、Hook能夠讓同一個業務邏輯的程式碼聚合在一塊,讓業務邏輯清楚地隔離開,讓程式碼更容易理解和維護。

react中使用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 &#39;antd&#39;
import server from &#39;./api&#39;
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 &#39;antd&#39;
import server from &#39;./api&#39;
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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板