日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

react获取id_解决React应用界面开发常见痛点(一)业务逻辑与UI分离

發布時間:2024/7/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 react获取id_解决React应用界面开发常见痛点(一)业务逻辑与UI分离 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:本系列是針對于React在界面開發痛點的一些解決方案,只是React應用中偏向展示的一環

構建一個業務與UI分離的react應用

本篇是基于HOC方案并未使用Hooks

業務邏輯與UI

在編寫一個react組件前,我們一定要弄清兩件事。

  • 什么是UI?
  • 什么是業務邏輯?
  • UI:組件的具體展示元素,通俗點就是組件的長相。接受到合理的數據就可以展示出一個合格的組件。

    業務邏輯:獲取數據、發送請求等等有比較明確的獨特業務的邏輯。

    為什么要業務邏輯與UI分離?

    在編寫react組件的時候,經常會出現業務邏輯相似,UI基本相同的組件,可能只是獲取的數據方式有一些不同。

    for example: 掘金的感興趣小冊列表為例子

  • 最外層的紅框為這個小冊的組件Booklet
  • 左側的是小冊的封面
  • 右側上方的是小冊的名稱
  • 購買人數
  • 小冊的鏈接
  • 以上這些都是Booklet組件的UI元素

    在Component中:

    Booklet組件只需要知道以下數據就可以正常工作:

  • 小冊的封面(imageUrl)
  • 小冊的名稱(name)
  • 購買人數(buyerNums)
  • 鏈接(link)
  • UI組件并不需要知道:

  • 如何獲取數據,(如何根據小冊id如何獲取到的)
  • 數據何時回來,(請求結束填充數據)
  • 請求的具體處理,(請求開始、結束、容錯、什么時候開始loading等等)
  • 以上這些應該在哪里處理?

    在Container中

  • 根據小冊ID獲取數據。
  • 判斷請求的當前狀態。(loading、error、success、cancel)。
  • 制作好數據傳遞給Component
  • 想要分離UI與業務邏輯時遇到的常見痛點

  • 生命周期中包含請求代碼,不好抽離。
  • 內部state導致組件后續擴展能力差。
  • 如何解決以上問題。

    recompose可以合理解決以上問題。

    在傳統的寫法中:

    path: components/card/index.jsxclass Card extends React.PureComponent { state = { name: undefined, link: undefined, buyerNum: undefined, logoUrl: undefined, } componentDidMount() { getCardById(this.props.id).then(card => { const {name ,link, buyerNum, logoUrl} = card; this.setState({ name, link, buyerNum, logoUrl, }) }); } render() { const {name ,link, buyerNum, logoUrl} = this.state; return ( {name} {buyerNum}人已購買 試讀 )}}

    上面的代碼就是標準的業務與UI不分離

    難以維護的影響

    后續需求仍然使用這個卡片組件的UI,但是變成了卡片列表包含多個卡片,使用卡片id獲取卡片數據的業務邏輯就很不合理。

    如何解決?

    UI與業務分離

    UI層

    業務邏輯層

    新的代碼種Card的UI組件不再被任何業務邏輯干擾。Card的container包含了本次根據id獲取卡片的業務邏輯。如果后續需要卡片列表。只需要一個CardList的container去獲取數據,渲染Card的UI組件。

    UI與業務分離的思路已經講完了。

    下一期會講一講reselect這個簡潔的第三方庫如何減少react組件無意義的render。

    總結

    以上是生活随笔為你收集整理的react获取id_解决React应用界面开发常见痛点(一)业务逻辑与UI分离的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。