今天让我们开启新的篇章好吧,来搞一搞React,以下所有操作都是我个人的一些理解,如果有错吴还请指出,想要看更全的可以去React官网可能一下子好吧

昨天按摩没到位,导致今天身体不太行,撸码千万别苦了自己,活着最重要

我们先来搞一搞React中props的使用,React项目的基本搭建我就不做了,很简单。直接开始上内容好吧

1.和Vue一样React也使用props来进行父组件往子组件传参,基本使用还是很简单的

步骤:

1.父组件调用子组件时传入属性

2.子组件直接通过this.props.属性名   即可拿到父组件传过来的值

 

import React, { Component,Fragment} from 'react';

//React的props传参

// 父组件
class App extends Component {
render() {
return (
<Fragment>
<Child aaa="红牛"></Child>
</Fragment>
)
}
} // 子组件
class Child extends Component{
render(){
return (
<div>{this.props.aaa}</div>
)
}
} export default App;

(我在这里提醒一句,文章所有代码都运行在搭好的React环境中,千万别拉到本地直接扔到一个html文件里,一运行一看运行不起来,这就好比在一个没有空气的星球,试图靠空气生存一样,空气都没有,你说能活下去嘛)

运行结果:

2.现在基本传参可以了,那能不能传点别的过去,当然可以,要是只能传参数岂不是很鸡肋,下面我们来试试能不能传一个函数过去,当然是可以的

步骤:1.在父组件里定义一个函数

   2.调用子组件时将函数传过去

   3.子组件通过this.props.函数名()来调用函数并且执行

import React, { Component,Fragment} from 'react';

//React的props传参

// 父组件
class App extends Component {
render() {
return (
<Fragment>
<Child aaa="红牛" bbb={this.hanshu}></Child>
</Fragment>
)
}
hanshu(){
return "我是父组件传过来的函数"
}} // 子组件
class Child extends Component{
render(){
return (
<div>{this.props.aaa}{this.props.bbb()}</div>
)
}
} export default App;

运行结果:

3.学过Vue的同学可能会知道Vue里面是可以对props传过来的值进行验证的,比如他的类型,是否为空,默认值等等,那在我们的React中有没有对props进行验证呢,答案是肯定的

  只不过React的props验证没有Vue的验证用起来方便,下面我们来看一看React中props具体是怎么验证的

  1.安装props-type

    yarn add prop-types

  2.引入prop-types

  3.愉快的使用两个属性来进行验证

      1.propTypes:用来验证类型和是否必传

      2.defaultProps:用来设置未传参时的默认值

   下面我们直接将代码发上来好吧

    

import React, { Component,Fragment} from 'react';
import PropTypes from 'prop-types'
//React的props传参 // 父组件
class App extends Component {
render() {
return (
<Fragment>
<Child aaa="红牛" ccc="大红枣"></Child>
</Fragment>
)
}} // 子组件
class Child extends Component{
render(){
return (
<div>{this.props.aaa}
<hr/>
{this.props.bbb}
<hr/>
{this.props.ccc}
<hr/>
{this.props.ddd}
<hr/>
</div>
)
}
}
//对传过来的props进行验证
//验证类型和是否必传
Child.propTypes = {
// 传入aaa的类型必须为number(不传不会报错,仅仅是限制已传入的参数类型)
aaa:PropTypes.number,
//必须传入bbb
bbb:PropTypes.isRequired,
//必须传入ccc且类型必须为
ccc:PropTypes.string.isRequired
} //设置默认值
Child.defaultProps = {
ddd:"默认值"
} export default App;

运行结果:

      

    我先来解释解释这两个错误  1:aaa类型传入为string,期望为number

                 2.bbb需要被传入

    我们可以看到结果都显示了,但是报错了,所以我们得到一个结论,验证不通过会报错,但是实际上并不影响我们页面的正常显示

上面我们进行是讲props的验证放到了类的定义外面,放到外面感觉有点分离了,那我们能不能拿到里面来呢,当然可以了,下面我们来看看另一种写法

    利用static静态属性将验证写在类的里面

    下面直接上代码

    

import React, { Component,Fragment} from 'react';
import PropTypes from 'prop-types'
//React的props传参 // 父组件
class App extends Component {
render() {
return (
<Fragment>
<Child aaa="红牛" ccc="大红枣"></Child>
</Fragment>
)
}} // 子组件
class Child extends Component{
render(){
return (
<div>{this.props.aaa}
<hr/>
{this.props.bbb}
<hr/>
{this.props.ccc}
<hr/>
{this.props.ddd}
<hr/>
</div>
)
}
static propTypes = {
// 传入aaa的类型必须为number(不传不会报错,仅仅是限制已传入的参数类型)
aaa:PropTypes.number,
//必须传入bbb
bbb:PropTypes.string.isRequired,
//必须传入ccc且类型必须为
ccc:PropTypes.string.isRequired
}
static defaultProps = {
ddd:"默认值"
}
} export default App;

好了,暂时关于React中的props我就写这些,大家有需要的可以参考参考,如有错误,请以官方文档为准,溜了溜了,用膳去

React中props的更多相关文章

  1. React中Props 和 State用法

    React中Props 和 State用法 1.本质 一句话概括,props 是组件对外的接口,state 是组件对内的接口.组件内可以引用其他组件,组件之间的引用形成了一个树状结构(组件树),如果下 ...

  2. React中props.children和React.Children的区别

    在React中,当涉及组件嵌套,在父组件中使用props.children把所有子组件显示出来.如下: function ParentComponent(props){ return ( <di ...

  3. React中props与state

    以下内容均为个人理解. 1.state: 在react中,state可以看成管理页面状态的集合(实则一个对象而已),库里面的成员均为页面渲染变量,整个页面为一个状态机,当state发生变化时,页面会重 ...

  4. 关于React中props与state的一知半解

    props props英文翻译是道具的意思,我个人理解为参数,如果我们将react组件看作是一个函数,那么props便是函数接收外部数据所使用的参数.props具有以下特性: 1.不可变(只读性) p ...

  5. React中props和state相同点和不同点

    朋友们,我想死你们了,最近这几天忙着和病魔作斗争所以没怎么写博客,今天感觉好点了,赶紧来写一波,就是这木敬业. 今天我们来讨论讨论props和state相同点和不同点 首先我来概要说明一下这两者 pr ...

  6. react中 props,state与render函数的关系

    我们很明显的能够感受到,react是一门数据驱动的框架,当数据发生变化,页面就会自动发生变化,他背后的原理是怎么样子的呢 比如todolist例子里面,inputValue变了,框里面的内容就会自动变 ...

  7. react中 props,state,render函数的关系

    1.当组件的 state 或者 props 发生改变的时候,自己的render函数就会重新执行. 2. 当父组件的render函数执行时,其所有子组件的render函数都会重新执行.

  8. React中的三大属性

    一.前言: 属性1:state 属性2:props 属性3:ref 与事件处理 二.主要内容: 属性1:state 1,认识: 1) state 是组件对象中最重要的属性,值是一个对象(可以包含多个数 ...

  9. React中组件间通信的方式

    React中组件间通信的方式 React中组件间通信包括父子组件.兄弟组件.隔代组件.非嵌套组件之间通信. Props props适用于父子组件的通信,props以单向数据流的形式可以很好的完成父子组 ...

随机推荐

  1. Python自动化编程-树莓派GPIO编程(二)

    树莓派我们编程一般都直接用高效的python,针对于GPIO编程,python也是有这一方面的库的,这里最有名也是最常用的就是RPI.GPIO了.这个库是专门为树莓派GPIO编程所设计的,利用它你可以 ...

  2. Flask中的before_request after_request

    1.@app.before_request 在请求(request)之前做出响应 @app.before_request 也是一个装饰器,他所装饰的函数,都会在请求进入视图函数之前执行 2.@app. ...

  3. WebRTC 学习之 Intel® Collaboration Suite for WebRTC 关键类整理

    关键类整理 ---> ConferenceClient.ConferenceClientObserver. 一.ConferenceClient ConferenceClient是一个应用程序在 ...

  4. java相关技术问答(一)

    网上一些没有标准答案的面试题,我自己做的解答总结,有任何异议可以提出来~^_^,不断更新中... Springboot除了自动配置与传统的spring还有哪些不同 传统的springweb项目需要部署 ...

  5. 惊艳,Dubbo域名已改,也不再局限于Java!

    今天作者想去 Dubbo 官网查下相关资料,发现官方域名由 dubbo.io 直接跳转至 dubbo.apache.org 下了,然后突然回想起 Dubbo 已经在 2 月份正式进入了 Apache ...

  6. HoloLens开发手记-凝视 Gaze

    在全息应用中,凝视是第一种输入形式,被用于定位物体(功能和PC的光标指针类似).凝视告诉你用户正在看向世界中的位置,让你能够确定他们的意图.在现实世界中,你通常会盯着你打算与之交互的物体.这种方式与凝 ...

  7. [视频]K8飞刀 WordPress XSS添加管理员 & GetShell 教程

    [视频]K8飞刀 WordPress  XSS添加管理员 & GetShell 教程 https://pan.baidu.com/s/1hq4LsmK

  8. ZooKeeper和Curator相关经验总结

    一.关于ZooKeeper的watch用法,需要注意 详细说明如下: ZooKeeper Watches All of the read operations in ZooKeeper - getDa ...

  9. 用DDD模拟案例分析

    之前我写了几篇关于DDD的介绍和一些小例子说明,我想这对于介绍DDD还是有些模糊,甚至还不知道怎么用DDD来分析设计.昨天和园友讨论也发现没有例子很难说明,所以今天我模拟了一个案例,同时这个案例也是真 ...

  10. 强制清除 gradle 依赖缓存

    今天同事误上传一个库,然后又删除了... 我刚好把他上传的库给down下来了...然后项目一直报错,clean...重新编译...删build文件....全都不管用===== 好几个人研究了好久,只能 ...