react之按钮鉴权

这篇具有很好参考价值的文章主要介绍了react之按钮鉴权。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用HOC来完成

HOC:高阶组件,是React中复用组件逻辑的一种高级技巧。HOC自身不是React API的一部分,他是一种基于React的组合特性而形成的设计模式。

作用:用于复用组件的业务逻辑

 VUE mixin
 React Hoc

用户数据渲染带操作按钮渲染

使用HOC完成按钮鉴权

Hoc的写法:

高阶组件是参数为组件,返回值为新组件的函数

function buttonHoc(wrapComponent){
    return 函数组件
}

function buttonHoc(wrapComponent){
    return 类组件
}

创建button HOC组件

export default (wrapComponent)=>{
    return ()=>{
        return(
            <>
            <div>HOC组件</div>
            </>
        )
    }
}

高阶组件给普通组件使用

1️⃣:  首先引入高阶组件

2️⃣:使用高阶组件,将组件作为参数传递到高阶组件

import ButtonHoc from "./ButtonHoc"
let Button =  (props)=>{
    let {label} = props
    return (
        <>
        <button>{label}</button>
        </>
    )
}
// 使用高阶组件
export default ButtonHoc(Button)

❗:其中ButtonHoc就是高阶组件,Button是函数组件

3️⃣:在HOC组件中输出包裹组件

export default (WrapComponent)=>{
    return ()=>{
        return(
            <>
            <WrapComponent></WrapComponent>
            </>
        )
    }
}

❗:高阶组件参数首字母大写,Hoc组件若没有向下传递props,页面会发生效果异常,即使在组件Button中收到了props,但是组件button被高阶组件所包裹,而高阶组件并且没有将props进行向下的传递

4️⃣:使用扩展符号,将props进行扩展并且延申 

react之按钮鉴权

按钮权限:

当前用户登录,开发服务器返回当前用户的权限文章来源地址https://www.toymoban.com/news/detail-429242.html

import { useState } from "react"

export default (WrapComponent)=>{
    return (props)=>{
        // 返回当前权限
        let {permission} = props
        // 控制组件是否渲染
        let [] = useState(false)
        // 模拟用户权限数据
        let [perm,setPer] = useState(["admin:user:delete","admin:user:update"])
        // 如果是全部权限,直接渲染
        let Index = null
        if(perm[0] == "*:*:*") Index = 0
        else  Index = perm.indexOf(permission)
        return(
            <>
            {/* ...是扩展props自定义组件属性传值 延申 */}
            {Index!=-1?<WrapComponent {...props}></WrapComponent>:null}
            </>
        )
    }
}

到了这里,关于react之按钮鉴权的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • react-高阶组件

    高阶组件( Higher-Order Component,HOC )是一个以 组件作为参数 ,返回一个 新组件 的 函数 。 高阶组件最大的特点就是 复用组件逻辑 高阶组件本身并不是 React 的 API,而是React组件的一种设计模式,一种组件重用的 高级技巧 高阶组件是一个 函数 ,接收要包装的组件,返回增

    2024年02月07日
    浏览(37)
  • React的高阶组件详解

    高阶组件基本介绍 什么是高阶组件呢? 在认识高阶组价之前, 我们先来回顾一下什么是高阶函数? 相信很多同学都知道(听说过?),也用过高阶函数 高阶组件和高阶函数它们非常相似的 高阶函数的定义, 至少满足以下条件之一: 接受一个或多个函数作为参数; 返回一个新的函数

    2024年02月01日
    浏览(48)
  • React 高阶组件(HOC)

    高阶组件不是 React API 的一部分,而是一种用来复用组件逻辑而衍生出来的一种技术。 高阶组件就是一个函数,且该函数接受一个组件作为参数,并返回一个新的组件。基本上,这是从 React 的组成性质派生的一种模式,我们称它们为“纯”组件, 因为它们可以接受任何动态

    2024年02月12日
    浏览(38)
  • React:高阶组件|ref转发

            参考文档:高阶组件 – React (reactjs.org)         高阶组件(Higher-Order Components,简称  HOC )是React中用于复用组件逻辑的一种高级技巧。具体而言: 高阶组件是参数为组件,返回值为新组件的函数 。         组件是将 props 转换为 UI,而高阶组件是将组件转换

    2024年02月21日
    浏览(42)
  • React组件间数据传递(弹框和高阶组件(HOC)特性实现)

    在现代前端开发中,React 已经成为了最受欢迎的 JavaScript 库之一。而在复杂的应用中,不同组件之间的数据传递问题显得尤为关键。在本文中,我们将探讨一种高效的方法,即如何利用弹框和高阶组件特性来实现 React 组件间的数据传递。我们将通过一个具体的业务场景来深入

    2024年02月11日
    浏览(40)
  • 【前端知识】React 基础巩固(三十七)——自定义connect高阶组件

    从这行代码可以看到,目前的connect直接引用了上级目录的store,过于依赖目前既定的store,这样不利于复用。假设另一个项目的store所在位置不在上级目录中,则会出现问题。 为了让所有人都能使用,我们应该把这种“写死”的做法换成让开发者自己传入一个store: 构建一个

    2024年02月15日
    浏览(48)
  • React-Hoc高阶组件与css-in-js技术

    目录 一、什么是React-Hoc 二、什么是高阶组件 三、什么是css-in-js技术 React-HOC(Higher-Order Component,高阶组件)是React中一种用于重用组件逻辑的模式。它本质上是一个函数,接受一个组件作为参数并返回一个新的组件。 HOC可以用于在不修改原始组件的情况下,为组件添加额外

    2024年01月24日
    浏览(44)
  • React Native Ref转发/Memo缓存/HOC高阶组件/Context上下文

    1、使用自定义组件时,实现外层组件对原始组件(TextInput)的操作 外层组件使用 ref 属性 子组件使用 forwardRef 包裹 2、函数式组件对外暴露实例方法(cusomFocus) 子组件 父组件如图一所示 1 、 避免多余渲染 问题:每次点击按钮都会导致 InfoView 组件发生重绘,即使每次 setI

    2024年01月21日
    浏览(50)
  • react中使用高阶函数

    高阶函数, 如果一个函数符合下面2个规范中的任何一个,那该函数就是高阶函数 1.若A函数,接收的参数是一个函数,那么A就可以称高阶函数 2.若A函数,调用的返回值依然是一个函数,那么A就可以称为高阶函数 常见的高级函数有:Promise,setTimeout(()={}),map(()={})等等

    2024年02月13日
    浏览(45)
  • 【React 】react 中的路由鉴权与路由拦截

    在 React 中, 路由拦截 和 路由鉴权 是两个相关但不完全相同的概念。 1 路由拦截 路由拦截(Route Interception)**是指在用户导航到某个路由之前,通过某种逻辑来拦截、检查或修改导航行为。**它可以用于实现权限控制、身份验证、页面加载前的准备工作等场景。在路由拦截中

    2024年02月10日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包