2019年,React 開發人員應該掌握的 22 種神奇工具

2021-12-29 LeanCloud通訊
我們可以通過聲明一個額外的靜態屬性 why Did You Render,並將其值設置為 true,把一個偵聽器附加到任意自定義組件:
import React from 'react'import Button from '@material-ui/core/Button'
const Child = (props) => <div {...props} />
const Child2 = ({ children, ...props }) => ( <div {...props}> {children} <Child /> </div>)
Child2.whyDidYouRender = true
const App = () => { const [state, setState] = React.useState({})
return ( <div> <Child>{JSON.stringify(state, null, 2)}</Child> <div> <Button type="button" onClick={() => setState({ hello: 'hi' })}> Submit </Button> </div> <Child2>Child #2</Child2> </div> )}
export default App

只有這樣做之後,我們的控制臺才會彈出令人難以置信的討厭警報:

但請不要誤會。把它當成一件好事。利用那些煩人的消息,這樣我們就可以修復那些浪費的重渲染。(https://url.leanapp.cn/Q1JbLRB)是啟動開發 React 項目最快的方法(擁有開箱即用的現代功能)。還有什麼能比 npx create-react-app 更簡單的呢?我在 Medium 上的教程(以及 Dev.to)都是用 create-react-app 構建 React 接口界面的,只是因為它又快又簡單。我們當中有些人可能不知道如何用 CRA 來創建一個 TypeScript 項目。我們要做的就是在末尾加上 typescript:
npx create-react-app <name> 

這會幫我們省去給 CRA 項目手工添加 TypeScript 的麻煩。5. React-Lifecycle-VisualizerReact-Lifecycle-Visualizer(https://url.leanapp.cn/7WKDMBe)是一個 npm 軟體包,用於跟蹤和可視化任意 React 組件的生命周期方法。與 Why Did You Render 相似,我們可以選擇任何組件來啟動生命周期可視化工具:
import React from 'react'import {  Log,  VisualizerProvider,  traceLifecycle,} from 'react-lifecycle-visualizer'
class TracedComponent extends React.Component { state = { loaded: false, }
componentDidMount() { this.props.onMount() }
render() { return <h2>Traced Component</h2> }}
const EnhancedTracedComponent = traceLifecycle(TracedComponent)
const App = () => ( <VisualizerProvider> <EnhancedTracedComponent /> <Log /> </VisualizerProvider>)

但是,其中一個缺點是它目前僅適用於類組件,因此尚不支持 Hook 。


Guppy(https://url.leanapp.cn/UOsByMC)是 React 的一個友好且免費的應用程式管理器和任務運行器,可以在桌面上運行且支持跨平臺,我們可以放心用。它提供了很多友好的圖形界面,為 React 開發人員的一些典型任務項目提供支持。例如創建新項目,執行任務和管理依賴項。並在 2018 年 8 月添加支持 Windows,因此可以放心,它肯定是跨平臺的。

我一直很喜歡 react-testing-library(https://url.leanapp.cn/AAWrJhu),因為在編寫單元測試時感覺不錯。這個包提供了 DOM 測試實用程序,鼓勵良好的測試實踐。此解決方案旨在解決測試實施細節的問題,就像用戶可以看到它們一樣,而不是測試 React 組件的輸入/輸出。測試實施細節並不是確保應用按預期運行的有效方法。當然,我們能夠更清楚的了解如何獲取組件所需的數據,使用哪種排序方法等。但是,如果我們必須更改實現方式以指向另一個資料庫的話,單元測試就會失敗,因為這些是耦合邏輯的實現細節。這是 react-testing-library 解決的一個問題,因為理想情況下,我們只希望我們的用戶界面能夠正常工作並最終正確顯示。只要這些組件能夠提供預期的輸出,數據如何獲取到這些組件實際上並不重要。
const renderComponent = ({ count }) =>  render(    <StateMock state={{ count }}>      <StatefulCounter />    </StateMock>,  )
it('renders initial count', async () => { const { getByText } = renderComponent({ count: 5 })
await waitForElement(() => getByText(/clicked 5 times/i))})
it('increments count', async () => { const { getByText } = renderComponent({ count: 5 })
fireEvent.click(getByText('+1')) await waitForElement(() => getByText(/clicked 6 times/i))})

8. React  Developer Tools(https://url.leanapp.cn/bO2m1ju)是一個擴展,它允許在Chrome 和 Firefox  開發人員工具中查看 React 組件層次結構。這是 React 開發中最常見的擴展插件,並且是 React 開發人員用來調試其應用程式的最有用的工具之一。在使用諸如 material-ui 或 semantic-ui-react 之類的組件庫時,Bit (https://bit.dev/)是一個很好的替代方案。它可以讓我們探索數千個開源組件,並使用它們來構建項目。

有很多不同的 React 組件,可供任何人使用,包括選項卡、按鈕、圖表、表格、導航條、下拉菜單、加載旋轉器、日期選擇器、麵包屑導航(breadcrumbs)、圖標、布局等等。如果你還不了解 Storybook(https://storybook.js.org/),並且希望能夠輕鬆地構建 UI 組件,我強烈建議你立即使用它。該工具啟動了支持熱重載的實時開發伺服器,讓我們可以在其中獨立地實時開發 React 組件。另一個很棒的事情是,我們可以使用現有的開源插件,將我們的開發經驗提升到一個全新的水平。例如,利用 Storybook README 包,我們可以在同一頁面上創建 README 文檔,同時開發供生產使用的 React 組件。這足以作為常規文檔頁面:

你是否想過自己的應用程式在流程圖中看起來是什麼樣的?React -sight(https://www.reactsight.com/)可以讓整個應用程式以樹狀圖的形式展示層次結構,清楚查看我們的 React 應用程式。它還支持 React Router,Redux 和 React Fibre。使用此工具,您可以將滑鼠懸停在節點上,這些節點是指向樹中與它們直接相關的組件的連結。如果您在查看結果時遇到問題,可以在 地址欄上輸入 chrome:extensions,找到 React Sight 框並單擊 Allow access to file URLs 開關,如下所示:

(https://url.leanapp.cn/x60eDHB)是用於創建可重複使用 React 組件的開發工具。這是本次推薦中最好的可用工具之一,它可以讓我們手動使用 React 的速度比眨眼還快(好吧,也許也沒那麼快)。(https://codesandbox.io/)的工具是一個在線編輯器,我們從創建原型到 Web 應用程式部署 - 都可以在這個網站實現!在早期,Codesandbox 僅支持 React,但現在已經擴展到 Vue 和 Angular 等庫的其他入門模板。他們還支持常見的靜態站點生成器(如 gatsby 或 nextjs )創建項目來啟動下一個 React Web 項目。關於 codesandbox,它不僅活躍,還有很多有意思的事情可以討論。如果大家需要探索一下人們為方便大家起見正在構建的一些項目,那麼簡單地點擊一下 explore 就可以訪問一大堆代碼示例,來幫助大家更新下一個項目:

React bits(https://vasanthk.gitbooks.io/react-bits/)是 React 模式、技術、技巧和竅門的集合,所有這些都以類似在線文檔的格式編寫,大家可以在同一個選項卡上快速訪問不同的設計模式和技術、反模式、樣式、UX  變體以及其他有用的與 React 相關的材料。他們有一個 GitHub 存儲庫,目前有 10437  星。一些示例包括諸如道具代理,在不同場景下處理各種 UX 的組合之類的概念,甚至還提示了每個開發人員應該避免的一些陷阱。這是他們頁面上的樣子,如大家在左側的菜單上看到的那樣,有很多信息:)

Folderize(https://url.leanapp.cn/CJDTdfQ)是一個 VSCode 擴展。它可以讓我們將組件文件轉換為組件文件夾結構。轉換後 React 組件仍將是一個組件,只是現在轉換為一個目錄而已。例如,假設我們正在創建一個 React 組件,它把文件作為屬性以顯示有用的信息,比如它們的元數據。元數據組件的邏輯佔用了很多行,因此我們決定將其拆分為一個單獨的文件。但是,當我們決定這樣做時,我們就有了兩個相互關聯的文件。

我們可能想把 FileView.js 和 FileMetadata.js 抽象到目錄結構中,像 Apples- 那樣,特別是如果我們希望添加更多與文件相關的組件,比如 FileScanner.js 。這就是 folderize 可以為我們做的事情,這樣它們就可以具有以下類似結構:

import React from 'react'import FileView from './src/components/FileView'
const App = (props) => <FileView {...props} />
export default App

16. React Starter Projects(https://url.leanapp.cn/DUi8AFk)是一個很棒的依賴庫列表,我們可以在一個頁面中查看全部項目。因此,如果我們覺得能同時快速查看到大量選項是非常有用的,那麼這個很適合我們。一旦看到喜歡的入門項目後,我們就可以簡單克隆存儲庫,根據開發中的應用需要進行簡單修改。但是,並非所有的庫都用來克隆存儲庫,因為其中一些庫需要通過安裝形式,才能成為項目的依賴項。這樣可以更輕鬆地獲取更新並保持項目整潔。

可以說,這個是每個開發者工具包裡都應該有的重要工具。Highlight Updates 是 React DevTools 的一項擴展功能,可以查看頁面中的哪些組件正在不必要地重新渲染。

它們會用橙色/紅色標出嚴重的重渲染問題,幫助我們在開發頁面時更容易的發現一些性能問題。除非我們的目標是構建平庸的應用程式,否則為什麼不試試這個在我們身邊的好東西。(https://url.leanapp.cn/s0QPrMa)是使用 Diff 和 React 製作的簡單美觀的文本差異查看器。支持多種功能,如:分屏視圖,內聯視圖,單詞差異,行高亮顯示等。如果我們想將此功能嵌入記事本(如 Boostnote)和自定義至應用程式(比如主題顏色、故事演示文檔組合等),那麼,它將非常有用。

JS.coach(https://url.leanapp.cn/6uPqXJp)是我經常用來查找 React 相關材料的網站。我不確定為什麼提到這個網站的人不多,但在這個頁面我發現了幾乎所有我需要的信息,它快捷、方便,並不斷更新,總是能為我所有的項目提供所需的結果。最近,他們添加了 React VR 選項卡,這真是太好了!(https://url.leanapp.cn/6uPqXJp)開源庫是一個與 React 相關的並非常棒的列表。我可能會忘記其他網站只從從這個連結學習 React 。因為可以在此找到大量有用的資源,這些資源肯定會幫助我們構建出色的 React 應用程式!(https://url.leanapp.cn/cLIGRY8)為大家提供了一個 React 環境來構建跨平臺的本機桌面應用程式。它是 Electron 的替代產品,只有一些簡潔的功能,包括:

與 React Native 相同的語法

適用於現存的 React 庫,例如 Redux

跨平臺

原生組件,不再有 Electron

與所有正常的 Node.js 包兼容

有興趣了解更多嗎?請閱讀他們的文檔(https://proton-native.js.org/#/)。22. Devhints React.js Cheatsheet一個不錯的 React 速查表(https://devhints.io/react),儘管它缺少 React Hooks。不用擔心,我將為 Reactv16.8 + 創建速查表,請繼續關注。本文經原作者 Jsmanifest 授權 LeanCloud 翻譯轉載,原文有部分刪減。

相關焦點

  • 十大最受歡迎的 React Native 應用開發編輯器
    Atom 被開發人員廣泛應用於多種程式語言。它有一個龐大而活躍的社區,誕生了很多有用的插件。Atom 常用的包atom-react-native-autocomplete package - 該包針對 React-Native,為 Atom 編輯器提供自動補全功能。
  • 2021 年你應該知道的 React 庫
    聲明:本文為譯文,原文連結:https://www.robinwieruch.de/react-librariesReact 已經誕生很久了,自從它誕生開始,圍繞組件驅動形成了一個非常全面的生態,但是來自其他程式語言或者框架的開發人員很難找到要構建一個 React 系統的所有組件。
  • 60+ 實用 React 工具庫,助力你高效開發!
    npm地址:https://www.npmjs.com/package/react-share6. create-react-appCreate React App 是一個命令行界面工具,讓您無需任何配置即可快速創建和運行 React 應用程式。
  • 一名合格的前端開發工程師應該掌握的8個技能
    近幾年來,Web前端發展迅速,從業人員薪資一再飆升吸引了人們的廣泛加入。不過隨著網際網路技術的發展以及企業需求升級,想要成為高薪Web前端工程師變得不再簡單,前端人員所需要掌握的技能也在增多,接下來千鋒廣州HTML5大前端培訓小編就給大家分享一個合格前端人員必備的技能。
  • Angular vs React vs Vue:2021年,應該選擇哪個框架
    就在幾年前,開發人員還在爭論他們是否應該在他們的項目中使用 Angular 和 React。但是在過去的幾年中,我們看到了對 Vue.js 的第三個玩家的興趣增長。如果您是一名剛開始從事某個項目的開發人員並且無法決定使用哪個 JavaScript 框架,那麼本指南應該可以幫助您做出決定。
  • 沒 2 年 React Native 開發經驗,你都遇不到這些坑
    React Native 開發時,如果只是寫些簡單的頁面,基本上按著官方文檔 reactnative.dev[1] 就能寫出來,但是 React Native 的 API 有幾百個,沒有一定的開發踩坑經驗,面對一些新的需求時確實會抓不到重點。
  • React Native開發基礎入門之搭建開發環境
    Yarn、React Native 的命令行工具(react-native-cli)Yarn是 Facebook 提供的替代 npm 的工具,可以加速 node 模塊的下載。React Native 的命令行工具用於執行創建、初始化、更新項目、運行打包服務(packager)等任務。
  • 關於react結合redux使用,或許你還應該掌握這些
    關於庫:庫(Lab)是將代碼集合成的一個產品,以供研發人員調用。庫為我們提供了很多封裝好的函數,我們在使用時只需要提取自己需要的函數即可,使用起來也非常靈活。若是沒有,我們也可以手動封裝函數實現。像jQuery、react、underscore就是庫。關於框架:框架(Framework)則是為解決一個(一類)問題而開發的產品。
  • ReactNative的調試工具Expo
    在開發ReactNative的時候,調試是個麻煩的問題,採用Expo進行ReactNative調試將會方便很多。  在配置ReactNative的過程中,曾經遇到一個小問題,但這個問題讓我記憶猶新的是stackoverflow上對這個問題的解答,問題雖小,但回答者並非有一說一,而是如同良師一般,講解了該問題的前世今生,讓我對他肅然起敬。
  • 2021年React學習路線圖
    背後有大量的社區支持和活躍的開發團隊。React 核心庫相對簡單,但是只學這個庫並不夠,特別是創建複雜的網頁應用時。我從 2016 年開始用 React 開發,當任務變得越來越複雜時,我不得不學習其他輔助庫,來實現這些功能。本文列出重要的 React 概念和其他你需要知道的有用的庫,你可以學到怎麼用 React 創建真實應用。
  • JavaScript開發者的27個神奇VSCode工具
    由於其內置開發工具支持TypeScript和Chrome開發者工具,這款編輯器讓人越用越喜歡。每個人都能使用和修改的無限擴展的開放原始碼,誰不愛呢?希望這篇文章能幫你找到擴充開發工具箱的新工具。雖然下列工具並不都是JavaScript語言專用,但它們都是JavaScript開發者會感興趣的。
  • React Status 中文周刊 #26 - Aleph:基於 Deno 的 React 框架
    以及使用諸如 AWS CDK 之類的自動化工具,你可以在 React 應用中實現和部署兩種服務端渲染方案。Nathan Sebhastian3 種 React 集成 Web Component 的方法 — 作者認為 「React 中無法集成 Web Component」的說法是荒誕的,隨後他詳細介紹了如何實現。
  • 【React】730- 從 loading 的 9 種寫法談 React 業務開發
    全文從業務開發中最常用見 loading 效果不同是實現講起,說下現在前端開發在業務上應該有的思考。入門級操作State最簡單的實現,我們在 Loading 組件內部聲明一個狀態,通過代碼邏輯判斷 loading 效果的展示。
  • 為什麼我說你應該學React源碼?
    ↑上圖來自《2019年度JavaScript現狀調查報告》↑可以說,如果你想進大廠,必須搞定 React,並且是從原理層面搞定 React。以下是我從阿里,字節,滴滴等大廠面經中摘取的React相關面試題:React 中的 setState 是同步還是異步React、Vue /Angular 的區別?
  • React Status 中文周刊 #2 - 使用 React 編寫 CLI 工具
    Chandransh SrivastavaFlutter 和 React Native 性能概覽 — 以數據為基礎的客觀比較,將 React Native 與 Google 開源的頗具競爭力的跨平臺開發工具
  • 入門 | 從Android到React Native開發
    當然,React Native的坑也不在少數:總的來說,React Native適合作為項目中的補充,而不是作為核心去開發APP。因為儘管是跨平臺和快捷開發,但是以React Native為核心,去開發稍微偏中型以上的項目,後期維護的人員絕對不比原生的少多少,而且項目大了,體驗依舊是個大問題。
  • React Status 中文周刊 #18 - 三種 React 的反面模式
    Spotify神奇的 hover 動效 — Josh 面向中級 React 開發者編寫了一份如何創建交互友好的Josh W ComeauReact 組件最佳實踐 7 條原則 — 本文列舉了 React 組件開發中遇到的
  • 掌握react,這一篇就夠了
    react眾所周知的前端3大主流框架之一,由於出色的性能,完善的周邊設施風頭一時無兩。本文就帶大家一起掌握react。
  • 如何用 React Native 開發一款電商 App?
    今天我們來聊一聊是如何在RN平臺開發一款用於查找圖書資料庫的電子商務移動app。如果你之前沒有使用過RN,那麼現在就跟我一起開啟你的移動端Javascript開發之旅吧。2018年Javascript迎來了前所未有的發展,各種庫、框架、開發工具都已經發展的相當的成熟了,整個社區也都在致力於使網上衝浪變得更加方便快捷。
  • Android 開發人員必須掌握的 10 個開發工具
    Android SDK 本身包含很多幫助開發人員設計、開發、測試和發布 Android 應用的工具,在本文中,我們將討論 10