国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

react高階組件經典應用之權限控制詳解

2024-05-06 15:27:06
字體:
來源:轉載
供稿:網友

前言

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

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

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

一般想到的做法類似這樣

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

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

有一天,產品經理說,“沒有權限的話,按鈕就置灰”。

于是代碼改成了這樣:

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

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

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

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

如果網站中只有幾個權限控制的按鈕還好,想象一下,如果有50+這樣的按鈕,內心是不是想砍需求方?

需求方是不敢砍的。那么有沒有一種方法,可以統一控制無權限時候的表現呢?

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

export let wrapAuth = ComposedComponent =>class WrapComponent extends Component { // 構造 constructor(props) {  super(props); } static propTypes = {  auth:PropTypes.string.isRequired, }; render() {  if (tool.getAuth(this.props.auth)) {  return <ComposedComponent { ...this.props} />;  } else {  return null;  } }};

這個方法實際上是一個包裝器,接受一個組件參數,根據權限,返回一個新的組件。

然后頁面按鈕的權限控制實現改成:

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

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

return <ComposedComponent disabled={true} { ...this.props} />            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 尉氏县| 剑川县| 贡觉县| 通河县| 涞水县| 博客| 日照市| 河津市| 滨州市| 维西| 舞钢市| 蓬莱市| 尼勒克县| 文成县| 常宁市| 康平县| 德安县| 海城市| 古蔺县| 曲沃县| 鹤山市| 迁西县| 渝中区| 潜江市| 临江市| 农安县| 芒康县| 逊克县| 金塔县| 洪洞县| 延庆县| 台北市| 松原市| 馆陶县| 新津县| 武宣县| 齐齐哈尔市| 沛县| 兴文县| 青铜峡市| 烟台市|