使用React hooks完成響應式元件開發

2021-10-09 18:20:24 字數 1456 閱讀 5388

好久沒更新部落格了,接觸react已經有一段時間了,近期在做公司官網的開發。

技術要求使用react ,響應式布局。

開始準備使用css @media 來負責頁面的響應布局。

當開發到一定程度時發現**查詢並不能滿足所有的情況。

當乙個元件切換不同大小裝置時只是改變寬度、邊距或者排版時,**查詢當然更好。

但是當乙個元件在pc上的展示模式和在移動端展示的模式完全不同時,與其使用大量的**查詢進行display:none;不如直接切換不同的元件來的優雅。

於是就想怎麼在react中優雅的獲取螢幕寬度,保證在動態改變螢幕尺寸的時候切換元件。

廢話不多說直接貼**

1.首先新建乙個檔案viewportcontext.jsx

import react from

'react'

;const viewportcontext = react.

createcontext()

;const

viewportprovider=(

)=>

react.

useeffect((

)=>,[

]);return

(}>

<

/viewportcontext.provider>);

};export

default viewportprovider;

export

const

useviewport=(

)=>

= react.

usecontext

(viewportcontext)

;return

;}

2.然後找到你的根元件將viewportcontext包在外層

import viewportcontext from

'../util/viewportcontext'

;const=(

)=>

3.在需要響應切換元件的地方引入

import

from

'../../util/viewportcontext'

;const=(

)=>

=useviewport()

;const breakpoint =

760;

return width < breakpoint ?

>

:>

;}

4.ok,到這裡你的元件就可以根據裝置寬度進行切換了。

實現主要是用到hooks + context,能夠最大的減少效能消耗,保證最大程度的復用性。

本文實現思路

developing responsive layouts with react hooks

使用React Hooks請求資料並渲染

在日常的開發中,從伺服器端非同步獲取資料並渲染是相當高頻的操作。在以往使用react class元件的時候,這種操作我們已經很熟悉了,即在class元件的componentdidmount中通過ajax來獲取資料並setstate,觸發元件更新。隨著hook的到來,我們可以在一些場景中使用hook的...

Delphi 完成埠使用

delphi 完成埠相關函式。變數fcompletionport thandle 完成埠的相關資訊 const gowork ffffeeee 開始工作 workbeat ffffeedd 執行緒心跳 gosend ffffeecc 傳送資料 poolpause ffffcccc 暫停 shutdo...

小心使用IOCP完成埠

s createsocket 假定s返回值是10 createiocompletionport s,m hcompletionport,dword ptr a,0 wsasend s,wsasend s,wsasend s,wsasend s,wsasend s,這個時候,完成埠裡累計了多條跟s相關...