摘要:簡評除了常見的和技巧,作者介紹了個有用的知識點。但這會添加額外的元素。因此,如果你有多個需要值的,建議使用。靜態類型檢查不會對類型進行檢查,這可能導致很多的問題。可以使用類型檢查器例如來幫助我們提前發現錯誤。
簡評:除了常見的 HOC 和 RenderProp 技巧,作者介紹了 7 個有用的知識點。
使用 Fragment 而不是 div
很多時候我們想要處理多個 component,但是 render 只允許返回一個 component,為了處理這個問題很可以使用
標簽來包裝所有的 component 。但這會添加額外的 HTML 元素。所以官方的建議是推薦使用?React Fragments?來處理這個問題。import React, { Fragment } from "react"; function ListItem({ item }) { return (// 也可以使用 <>....> 來替換 {item.term} {item.description} // 等同于 // <> // {item.term} //{item.description} // > );} function Glossary(props) { return ({props.items.map(item => (
);}))}
context 用起來
Context 提供了一種方式將數據傳遞到整個 component 樹中,而不必手動為每一層 component 傳遞 props。
因此,如果你有多個需要值的 component,建議使用 context。如果只有一個子 component 需要使用這個值建議使用?compositions。
最少使用一個 Error Boundaries
React 16 附帶了一個驚艷的功能 Error Boundaries。使用 Error Boundaries 我們可以處理這種問題,子組件出現錯誤不會導致整個應用報錯和白屏。
舉個例子: 定義一個 ErrorBoundary 組件
class ErrorBoundary extends React.Component { constructor(props) { super(props); this.state = { hasError: false }; }static getDerivedStateFromError(error) { // Update state so the next render will show the fallback UI. return { hasError: true }; }componentDidCatch(error, info) { // You can also log the error to an error reporting service logErrorToMyService(error, info); }render() { if (this.state.hasError) { // You can render any custom fallback UI returnSomething went wrong.
; }return this.props.children; }}
用法和其他組件一樣簡單:
注意:React15 中的 unstable_handleError 方法不再有效,需要替換成 componentDidCatch 方法。
在生產環境中使用 production build
官網提供了很多提高性能的?配置。只需要 10 分鐘即可給你的應用帶來質的飛躍,在部署到生產環境前別忘了檢查它們。
使用 Refs 來操縱元素
我們可以使用 Refs 來觸發動畫,文本選擇或焦點管理。
例如:
我們可以?獲取 inpout DOM 節點引用。
class CustomTextInput extends React.Component { constructor(props) { super(props); // Create a ref to store the textInput DOM element this.textInput = React.createRef(); } render() { // Use the `ref` callback to store a reference to the text input DOM // element in an instance field (for example, this.textInput). return ( ); } }
然后就可以在合適的時機聚焦這個
focus() { // Explicitly focus the text input using the raw DOM API // Note: we"re accessing "current" to get the DOM node this.textInput.current.focus(); }
使用代碼拆分
如果你使用 create-react-app 創建應用或使用 NextJs 會自動創建一個 webpack 配置文件,webpack 會將整個應用打包到一個文件中,如果應用程序變得復雜或者添加第三方庫都會導致最終生成的文件變大,導致應用訪問速度變慢。這時候可以使用代碼拆分,創建多個輸出,在需要的時候才加載對應的包,可以大大改善網頁加載時間。
可以使用 React.lazy 來實現代碼拆分。
使用方式也很簡單,這里簡單實現一個基于路由代碼分割的例子:
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";import React, { Suspense, lazy } from "react";const Home = lazy(() => import("./routes/Home"));const About = lazy(() => import("./routes/About"));const App = () => (Loading...
注意: React.lazy 和 Suspense 暫不支持服務端渲染,如果服務端渲染想要實現這個功能可以使用?React
Loadable。
靜態類型檢查
JavaScript 不會對類型進行檢查,這可能導致很多的問題。可以使用類型檢查器(例如?Flow)來幫助我們提前發現錯誤。Flow 是有 facebook 開發的類型檢查器,可以給變量、函數和 React Component 添加而外的注釋是一個不錯的選擇。
原文:Concepts to become an advanced React developer
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77908.html
摘要:第二十二期掘金團隊請來了進階解密作者劉望舒做了為期三天的活動活動已結束。我們在此精選了一些來自用戶的提問及劉望舒的回答。提醒本期分布式微服務主題的正在進行,歡迎前去提問,傳送門關于劉望舒進階之光進階解密的作者,安卓巴士等技術大會特邀講師。第二十二期 AMA 掘金團隊請來了《Android進階解密》作者-- 劉望舒做了為期三天的 Ask Me Anything (AMA) 活動(活動已結束)。...
摘要:請記住,這些書中的一些可能不是最新的,但概念和基礎仍應適用。是最好的老師之一。的秘密由部分組成。在你完成這些書后,查看書籍和最好的本土書籍。 我看過三本,第1本,第二本,第四本。第一本買的的實體書,其他兩本看的是電子書。第一本是大名鼎鼎老道寫的,書很薄,但是非常經典。javascirpt忍者秘籍是jquery的作者寫的,也是非常經典。you dont kown js系列也是非常好。看了...
摘要:年,和前端開發者與應用程序前端開發者之間產生了巨大的分歧。開發最常見的解決方案有手機和平板的原生應用程序桌面應用程序桌面應用程序原生技術最后,前端開發者可以從瀏覽器開發中學習到,編寫代碼不需要考慮瀏覽器引擎的限制。 前端開發者手冊2019 Cody Lindley 編著 原文地址 本手冊由Frontend Masters贊助,通過深入現代化的前端工程課程來提高你的技能。 下載:PDF ...
摘要:年,和前端開發者與應用程序前端開發者之間產生了巨大的分歧。開發最常見的解決方案有手機和平板的原生應用程序桌面應用程序桌面應用程序原生技術最后,前端開發者可以從瀏覽器開發中學習到,編寫代碼不需要考慮瀏覽器引擎的限制。 前端開發者手冊2019 Cody Lindley 編著 原文地址 本手冊由Frontend Masters贊助,通過深入現代化的前端工程課程來提高你的技能。 下載:PDF ...
閱讀 3863·2021-09-23 11:51
閱讀 3057·2021-09-22 15:59
閱讀 855·2021-09-09 11:37
閱讀 2063·2021-09-08 09:45
閱讀 1259·2019-08-30 15:54
閱讀 2055·2019-08-30 15:53
閱讀 484·2019-08-29 12:12
閱讀 3282·2019-08-29 11:15