最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react高階組件經(jīng)典應(yīng)用之權(quán)限控制詳解

 更新時間:2017年09月07日 09:22:33   作者:marginyu  
在React中,高階組件是重用組件邏輯的一項高級技術(shù)。下面這篇文章主要給大家介紹了關(guān)于react高階組件經(jīng)典應(yīng)用之權(quán)限控制的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

所謂高級組件,即:接受一個組件作為參數(shù),并且其返回值也為一個react組件

而大家應(yīng)該都知道,權(quán)限控制算是軟件項目中的常用功能了。在網(wǎng)站中,權(quán)限控制一般分為兩個維度:頁面級別和頁面元素級別。

我們來說說頁面元素粒度的權(quán)限控制。在某個頁面中,有個“創(chuàng)建用戶”的按鈕,管理員才能看到。

一般想到的做法類似這樣

class Page extends Component{
 render() {
 let hasCreatePermission = tool.getAuth("createUser"); 
 return (
  <div>
  {hasCreatePermission ? <Button>創(chuàng)建用戶</Button> : null}
  </div>
 );
 }
}

在當前用戶的權(quán)限列表中判斷是否有“創(chuàng)建用戶”的權(quán)限,然后控制按鈕的顯示和隱藏。

有一天,產(chǎn)品經(jīng)理說,“沒有權(quán)限的話,按鈕就置灰”。

于是代碼改成了這樣:

 render() {
 let hasCreatePermission = tool.getAuth("createUser"); 
 return (
  <div>
  {hasCreatePermission ? <Button>創(chuàng)建用戶</Button> : <Button disabled={true}>創(chuàng)建用戶</Button>}
  </div>
 );
 }

過了一個月,產(chǎn)品經(jīng)理又說,“沒有權(quán)限的話,按鈕也正常展示,只是點擊后給個'申請權(quán)限'的文案提示”。

額,硬著頭皮改了下代碼:

 render() {
 let hasCreatePermission = tool.getAuth("createUser"); 
 return (
  <div>
  {hasCreatePermission ? <Button>創(chuàng)建用戶</Button> : <Button onClick={()=>alert("權(quán)限不足,請找管理員小K申請")}>創(chuàng)建用戶</Button>}
  </div>
 );
 }

如果網(wǎng)站中只有幾個權(quán)限控制的按鈕還好,想象一下,如果有50+這樣的按鈕,內(nèi)心是不是想砍需求方?

需求方是不敢砍的。那么有沒有一種方法,可以統(tǒng)一控制無權(quán)限時候的表現(xiàn)呢?

有。讓我們來試試React的高階組件吧。

export let wrapAuth = ComposedComponent =>class WrapComponent extends Component {
 // 構(gòu)造
 constructor(props) {
  super(props);
 }

 static propTypes = {
  auth:PropTypes.string.isRequired,
 };

 render() {
  if (tool.getAuth(this.props.auth)) {
  return <ComposedComponent { ...this.props} />;
  } else {
  return null;
  }
 }
};

這個方法實際上是一個包裝器,接受一個組件參數(shù),根據(jù)權(quán)限,返回一個新的組件。

然后頁面按鈕的權(quán)限控制實現(xiàn)改成:

const AuthButton = wrapAuth(Button);
class Page extends Component{
 render() {
 return (
  <div>
  <AuthButton auth="createUser">創(chuàng)建用戶</AuthButton>
  </div>
 );
 }
}

當遇到前面所說的需求變動時,現(xiàn)在只要把包裝器里return null這行代碼改成

return <ComposedComponent disabled={true} { ...this.props} />

或者

return <ComposedComponent onClick={()=>alert("權(quán)限不足,請找管理員小K申請")} { ...this.props} />

就行啦。

嗯,高階組件讓生活又美好了一些~

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • react-native彈窗封裝的方法

    react-native彈窗封裝的方法

    這篇文章主要為大家詳細介紹了react-native彈窗封裝的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • React實現(xiàn)卡片拖拽效果流程詳解

    React實現(xiàn)卡片拖拽效果流程詳解

    這篇文章主要介紹了React Web開發(fā)實戰(zhàn)示例,實現(xiàn)卡片拖拽效果,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-11-11
  • 使用react在修改state中的數(shù)組和對象數(shù)據(jù)的時候(setState)

    使用react在修改state中的數(shù)組和對象數(shù)據(jù)的時候(setState)

    這篇文章主要介紹了使用react在修改state中的數(shù)組和對象數(shù)據(jù)的時候(setState),具有很好的參考價值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • React18系列reconciler從0實現(xiàn)過程詳解

    React18系列reconciler從0實現(xiàn)過程詳解

    這篇文章主要介紹了React18系列reconciler從0實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 淺談對于react-thunk中間件的簡單理解

    淺談對于react-thunk中間件的簡單理解

    這篇文章主要介紹了淺談對于react-thunk中間件的簡單理解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • React組件性能提升實現(xiàn)方法詳解

    React組件性能提升實現(xiàn)方法詳解

    這篇文章主要介紹了React組件性能最佳優(yōu)化實踐分享,React組件性能優(yōu)化的核心是減少渲染真實DOM節(jié)點的頻率,減少Virtual?DOM比對的頻率,更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2023-03-03
  • React 腳手架使用指南(最新推薦)

    React 腳手架使用指南(最新推薦)

    本文介紹了React腳手架(CreateReactApp)的使用指南,包括創(chuàng)建項目、項目結(jié)構(gòu)、常用命令、最佳實踐、常見問題解決以及腳手架的優(yōu)勢,結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2024-12-12
  • 解決React報錯Property 'X' does not exist on type 'HTMLElement'

    解決React報錯Property 'X' does not 

    這篇文章主要為大家介紹了解決React報錯Property 'X' does not exist on type 'HTMLElement',有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • React 服務(wù)器組件的使用方法詳解

    React 服務(wù)器組件的使用方法詳解

    最近,React 服務(wù)器組件受到了廣泛的關(guān)注和熱捧,這是因為 React 服務(wù)器組件允許開發(fā)人員將與組件相關(guān)的任務(wù)外包給服務(wù)器,在本文中,我們將討論什么是 React 服務(wù)器組件,以及如何將它們集成到構(gòu)建應(yīng)用程序中,需要的朋友可以參考下
    2023-10-10
  • React Hook 'useEffect' is called in function報錯解決

    React Hook 'useEffect' is call

    這篇文章主要為大家介紹了React Hook 'useEffect' is called in function報錯解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12

最新評論

海盐县| 富蕴县| 寿宁县| 靖西县| 得荣县| 光泽县| 闻喜县| 玛沁县| 阳东县| 湾仔区| 平湖市| 两当县| 阿克陶县| 张家港市| 平顶山市| 阳东县| 韶关市| 璧山县| 佛教| 雅江县| 华安县| 平湖市| 晋宁县| 龙山县| 巨鹿县| 巴塘县| 鞍山市| 渑池县| 景泰县| 五华县| 保靖县| 江达县| 洛浦县| 汉中市| 澳门| 阿巴嘎旗| 申扎县| 宜都市| 壤塘县| 柘荣县| 柳河县|