react component分類

  • 展示組件(也可以叫做Dumb定義:只會(huì)接收props并根據(jù)props確定渲染結(jié)果的組件
    • 特點(diǎn):復(fù)用性極高

    • 劃分原則:我們開(kāi)發(fā)一個(gè)控件,首先確定會(huì)不會(huì)被復(fù)用,只要被復(fù)用就要開(kāi)發(fā)成展示組件
      若果存在Dumb的子組件,那一定是Dumb組件
      所有Dumb都會(huì)放在components目錄下

    • 為什么這么劃分:對(duì)于Dumb來(lái)說(shuō)依賴的東西越少越好
      依賴的越少?gòu)?fù)用性越高


  • 容器組件(也可以叫做)定義:專門(mén)用來(lái)做數(shù)據(jù)相關(guān)的應(yīng)用邏輯,拉取數(shù)據(jù),把Dumb關(guān)聯(lián)起來(lái),通過(guò)props傳遞給Dumb

    • 特點(diǎn):處理業(yè)務(wù)數(shù)據(jù)邏輯,調(diào)度子組件

    • 劃分原則:容器組件我理解是倒推出來(lái)的,比如“在某個(gè)業(yè)務(wù)場(chǎng)景中你需要把幾個(gè)容展示組件拼湊起來(lái),并且需要一個(gè)調(diào)度管理這幾個(gè)展示組件的角色,那么你需要一個(gè)容器組件
      ‘基本’不存在復(fù)用,需要和redux做連接connect,有處理異步數(shù)據(jù)操作的組件
      所有smart都會(huì)放在container目錄下

    • 為什么這樣劃分:smart不用考慮太多復(fù)用性的問(wèn)題,他們用是用來(lái)執(zhí)行特定業(yè)務(wù)邏輯的
      smart組件通常都有子組件,可為smart或Dumb


  • 函數(shù)式無(wú)狀態(tài)組件(stateless function)0.14后推出的一種組件編寫(xiě)方式
    • 無(wú)狀態(tài)組件和純函數(shù)的結(jié)合

      • 無(wú)狀態(tài)組件:內(nèi)部沒(méi)有state,輸出只取決于props, context
      • 純函數(shù):相同的輸入,輸出永遠(yuǎn)相同,沒(méi)有可觀察的任何副作用(不會(huì)更改傳入值)
    • 接收props, context

const PropTypes = require('prop-types');

const Button = ({children}, context) =>
  <button style={{background: context.color}}>
    {children}
  </button>;

Button.contextTypes = {color: PropTypes.string};
  • 為什么要用

    • 語(yǔ)法簡(jiǎn)潔性(fb推薦理由)
    • 占內(nèi)小
    • 首次render性能更好
    • 可擴(kuò)展性強(qiáng)(可以進(jìn)行函數(shù)的compose,currying改造)
  • 缺點(diǎn):

    • 無(wú)生命周期(不能在shouldComponentUpdate進(jìn)行淺對(duì)比優(yōu)化渲染)
    • 沒(méi)有this
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 前言 在 React 中,一切皆是組件,因此理解組件的工作流與核心尤為重要。我們有多種創(chuàng)建組件的方式(不僅 ...
    cbw100閱讀 3,716評(píng)論 0 10
  • 項(xiàng)目地址 從頭開(kāi)始建立一個(gè)React App - 項(xiàng)目基本配置 npm init 生成 package.json ...
    瘦人假嚕嚕閱讀 89,728評(píng)論 33 78
  • react 基本概念解析 react 的組件聲明周期 react 高階組件,context, redux 等高級(jí)...
    南航閱讀 1,131評(píng)論 0 1
  • 本筆記基于React官方文檔,當(dāng)前React版本號(hào)為15.4.0。 1. 安裝 1.1 嘗試 開(kāi)始之前可以先去co...
    Awey閱讀 7,913評(píng)論 14 128
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,733評(píng)論 25 709

友情鏈接更多精彩內(nèi)容