iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >react中props 的使用及进行限制的方法
  • 347
分享到

react中props 的使用及进行限制的方法

2024-04-02 19:04:59 347人浏览 安东尼
摘要

组件的props( props是一个对象 ) 作用:接收传递给组件的数据 特点: 可以给组件传递任意类型的数据 props是只读的对象,只能读取属性的值,无法修改对

组件的props( props是一个对象 )

作用:接收传递给组件的数据
特点:

  • 可以给组件传递任意类型的数据
  • props是只读的对象,只能读取属性的值,无法修改对象
  • 注意:使用类组件时,如果写了构造函数,应该将props传递给super(),否则,无法在构造函数中获取到

props props 的使用


 <div id="test1"></div>
  <div id="test2"></div>
  <div id="test3"></div>
  <!-- 引入React核心库 -->
  <script src="../js/react.development.js"></script>
  <!-- 引入react-dom,用于支持react操作dom -->
  <script src="../js/react-dom.development.js"></script>
  <!-- 引入babel 用于将jsx 转换为 js -->
  <script src="../js/babel.min.js"></script>
  <script type='text/babel'>
  // 创建组件
  class Person extends React.Component{
    render() {
      console.log(this);
      const{name,age,sex} = this.props
      return(
        <ul>
          <li>姓名:{name}</li>
          <li>性别:{sex}</li>
          <li>年龄:{age+1}</li>
        </ul>
      )
    }
  }
  // 渲染组件到页面
  ReactDOM.render(<Person name="jerry" age={19} sex="男" />,document.getElementById('test1'))
  ReactDOM.render(<Person name="tom" age={18} sex="女" />,document.getElementById('test2'))

  const p = {name:'老刘',age:18,sex:'女'}
  // ReactDOM.render(<Person name={p.name} age={p.age} sex={p.sex} />,document.getElementById('test3'))
  
  ReactDOM.render(<Person {...p} />,document.getElementById('test3'))

  </script>

对props进行限制

一定要引入 prop-types.js 否则会报错


<div id="test1"></div>
  <div id="test2"></div>
  <div id="test3"></div>
  <!-- 引入react核心库 -->
  <script src="../js/react.development.js"></script>
  <!-- 引入react-dom,用于支持react操作dom -->
  <script src="../js/react-dom.development.js"></script>
  <!-- 引入babel 用于将jsx 转换为 js -->
  <script src="../js/babel.min.js"></script>
  <!-- 引入prop-types, 用于对组件标签属性进行限制 引入后全局就多了一个对象 PropTypes -->
  <script src="../js/prop-types.js"></script>

  <script type='text/babel'>
  // 创建组件
  class Person extends React.Component{
    render() {
      console.log(this);
      const{name,age,sex} = this.props
      return(
        <ul>
          <li>姓名:{name}</li>
          <li>性别:{sex}</li>
          <li>年龄:{age+1}</li>
        </ul>
      )
    }
  }
  // 限制规则
  Person.propTypes = {
    // 限制name 内容为字符串  isRequired 表示该内容为必须的不能省略
    name:PropTypes.string.isRequired,
    // 限制sex为字符串
    sex: PropTypes.string,
    // 限制age为数值
    age: PropTypes.number,
    // 限制speak为函数
    speak: PropTypes.func
  }
  Person.defaultProps = {
    sex:'男',// sex 默认值 为男
    age:18,
    speak: function() {
        return [1];
    }
  }
  // 渲染组件到页面
  ReactDOM.render(<Person name="jerry" age={19} />,document.getElementById('test1'))
  ReactDOM.render(<Person name="tom" age={18} sex="女" />,document.getElementById('test2'))

  const p = {name:'老刘',age:18,sex:'女'}
  // ReactDOM.render(<Person name={p.name} age={p.age} sex={p.sex} />,document.getElementById('test3'))
  
  ReactDOM.render(<Person {...p} />,document.getElementById('test3'))

  </script>

Vue 对props进行限定

我们可以为组件的 prop 指定验证要求,例如你知道的这些类型。如果有一个需求没有被满足,则 Vue 会在浏览器控制台中警告你。这在开发一个会被别人用到的组件时尤其有帮助。

为了定制 prop 的验证方式,你可以为 props 中的值提供一个带有验证需求的对象,而不是一个字符串数组。例如:


Vue.component('my-component', {
  props: {
    // 基础的类型检查 (`null` 和 `undefined` 会通过任何类型验证)
    propA: Number,
    // 多个可能的类型
    propB: [String, Number],
    // 必填的字符串
    propC: {
      type: String,
      required: true
    },
    // 带有默认值的数字
    propD: {
      type: Number,
      default: 100
    },
    // 带有默认值的对象
    propE: {
      type: Object,
      // 对象或数组默认值必须从一个工厂函数获取
      default: function () {
        return { message: 'hello' }
      }
    },
    // 自定义验证函数
    propF: {
      validator: function (value) {
        // 这个值必须匹配下列字符串中的一个
        return ['success', 'warning', 'danger'].indexOf(value) !== -1
      }
    }
  }
})

当 prop 验证失败的时候,(开发环境构建版本的) Vue 将会产生一个控制台的警告。

注意那些 prop 会在一个组件实例创建之前进行验证,所以实例的 property (如 data、computed 等) 在 default 或 validator 函数中是不可用的。

类型检查
type 可以是下列原生构造函数中的一个:


String
Number
Boolean
Array
Object
Date
Function
Symbol

额外的,type 还可以是一个自定义的构造函数,并且通过 instanceof 来进行检查确认。例如,给定下列现成的构造函数:


function Person (firstName, lastName) {
  this.firstName = firstName
  this.lastName = lastName
}

你可以使用:


Vue.component('blog-post', {
  props: {
    author: Person
  }
})

来验证 author prop 的值是否是通过 new Person 创建的。

到此这篇关于react 中的 props 的使用以及进行限制的文章就介绍到这了,更多相关react props进行限制内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: react中props 的使用及进行限制的方法

本文链接: https://www.lsjlt.com/news/124863.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • react中props 的使用及进行限制的方法
    组件的props( props是一个对象 ) 作用:接收传递给组件的数据 特点: 可以给组件传递任意类型的数据 props是只读的对象,只能读取属性的值,无法修改对...
    99+
    2024-04-02
  • React中的axios模块及使用方法
    目录1 axios介绍2 使用方法2.1 在React中安装axios2.2 get请求2.3 post请求:发送表单数据和文件上传2.4 put请求:对数据进行全部更新2.5 pa...
    99+
    2024-04-02
  • Electron+React进行通信的方法
    目录1.前言:2.一些理解:3.数据交互4.前后端交互5.一些代码举例:1.前言: Electron是使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序 项目...
    99+
    2024-04-02
  • React中使用事件驱动进行状态管理的方法
    这篇文章给大家分享的是有关React中使用事件驱动进行状态管理的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。自 Hook 被引入 React  以来,Context API 与 Hook 库在应用...
    99+
    2023-06-14
  • 关于React Native使用axios进行网络请求的方法
    在前端开发中,能够完成数据请求的方式有很多,如Ajax、jQuery ajax、axios和fetch等。不过,随着技术的发展,现在能够看到的基本上也就axios和fetch两种。 ...
    99+
    2024-04-02
  • JAVA中使用log4j及slf4j进行日志输出的方法
    JAVA中输出日志比较常用的是log4j,这里讲下log4j的配置和使用方法,以及slf4j的使用方法。 一、下载log4j的架包,并导入项目中,如下: 二、创建log4j.properties配置文件 1、log4j配置文件的位置...
    99+
    2023-10-06
    java log4j 单元测试
  • React forwardRef的使用方法及注意点
    之前使用react.forwardRef始终无法应用于react高阶组件中,最近终于捣鼓出来了,于是记录下来。关键点就是React.forwardRef的API中ref必须指向dom...
    99+
    2024-04-02
  • React中使用Mobx的方法
    目录一、Mobx前端状态管理框架 基础概念?1. 什么是Mobx2. 什么是状态管理?3. 为什么需要状态管理?状态管理的一般思想(Flux)二、mobx的用法1. 安装 mobx2...
    99+
    2023-02-03
    React使用Mobx React使用Mobx
  • 详解Vue中$props、$attrs和$listeners的使用方法
    目录背景一、文档描述二、具体使用三、总结背景 现在我们来讨论一种情况,父组件与孙子组件怎么通信,我们有多少种解决方案? 我们使用VueX来进行数据管理,但是如果项目中多个组件共享状态...
    99+
    2024-04-02
  • SpringBoot 进行限流的操作方法
    目录为什么要进行限流?什么是限流?有哪些限流算法?1. 计数器限流2. 漏桶算法3. 令牌桶算法基于Guava工具类实现限流基于AOP实现接口限流小结大家好,我是飘渺。SpringB...
    99+
    2024-04-02
  • MySQL进行权限管理的方法
    这篇文章主要介绍了MySQL进行权限管理的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。MySQL 的权限表在数据库启动的时候就载入内存,当...
    99+
    2024-04-02
  • React中memouseCallbackuseMemo方法作用及使用场景
    目录memo()、useCallback()、useMemo()使用场景React.memo()React.useCallback()React.useMemo()memo()、us...
    99+
    2023-03-06
    React useCallback useMemo React useMemo
  • Rainbond对微服务进行请求速率限制的方法
    本篇内容主要讲解“Rainbond对微服务进行请求速率限制的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Rainbond对微服务进行请求速率限制的方法”吧!Rainbond 默认支持基于 ...
    99+
    2023-06-30
  • Android源码使用16进制进行状态管理的方法
    前言 在Android源码中,对于“多状态”的管理总是通过16进制数字来表示,类似这种格式: //ViewGroup.java protected int mGroupFlag...
    99+
    2024-04-02
  • Linux中使用wget进行下载的方法
    本篇内容主要讲解“Linux中使用wget进行下载的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中使用wget进行下载的方法”吧!使用举例:1、下载单个文件代码如下:$ wget...
    99+
    2023-06-12
  • solaris10如何使用projadd进行资源限制的添加
    这篇文章主要介绍了solaris10如何使用projadd进行资源限制的添加,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一...
    99+
    2024-04-02
  • Django中session进行权限管理的使用
    目录1.urls.py2.login/models.py3.views.login和login.html4.views.index4.views.index5.views.logou...
    99+
    2024-04-02
  • react使用axios进行api网络请求的封装方法详解
    目录前言准备工作开始封装axiosconfig.jsrequest.js进行请求总结前言 最近写react项目使用到axios进行请求封装,在这里记录一下,希望可以帮助到初学的小伙伴...
    99+
    2024-04-02
  • React Native 中限制导入某些组件和模块的方法
    目录限制使用 Touchable限制使用 Image同时限制两者示例有些时候,我们不希望使用某些组件,而是想使用其他组件。这时候,我们可以使用一个名为 no-restric...
    99+
    2022-11-13
    React Native 限制导入 React Native 导入组件模块
  • React中style的使用方法及注意事项是什么
    这篇“React中style的使用方法及注意事项是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“React中style的...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作