React 三大属性之一 props的一些简单理解

什么是props?

官网上是这么解释的:When React sees an element representing a user-defined component, it passes JSX attributes to this component as a single object. We call this object “props”.

意思为:

当React看到表示用户定义组件的元素时,它会将JSX属性作为单个对象传递给此组件。我们称这个对象为“props。

顾名思义,props就是属性的简写,是单个值,是在父组件中定义或已经在state中的值,并将这些值传递给其子组件。props本身不可变,但可以通过触发state的变化,反过来改变props本身的值。

props的作用

作用:用于接收组件外部的数据
传递数据: 通过给组件标签添加属性
接收数据:函数组件通过 参数 props接收数据,类组件通过 this.props接收数据

props的特点

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

 props的应用场景

1,子组件调用父组件的方法
(1)子组件要拿到父组件的属性,需要通过 this.props 方法。
(2)同样地,如果子组件想要调用父组件的方法,只需父组件把要被调用的方法以属性的方式放在子组件上,
子组件内部便可以通过“this.props.被调用的方法”这样的方式来获取父组件传过来的方法。

2,父组件调用子组件的方法
在 ReactJS 中有个叫 ref 的属性。这个属性就像给组件起个引用名字一样,子组件被设置为 ref 之后(比如 ref=“xxx”)。父组件便可以通过 this.refs.xxx 来获取到子组件了。

类组件中父组件给子组件传递参数

import React, { Component, Fragment } from "react";
//React的props传参
// 父组件
class App extends Component {
  render() {
    return (
      <Fragment>
        <Child name="卡卡罗特"></Child>
      </Fragment>
    );
  }
}
// 子组件
class Child extends Component {
  render() {
    return <div>{this.props.name}</div>;
  }
}

export default App;

运行结果

类组件中父组件给子组件传递一个函数

import React, { Component, Fragment } from "react";
//React的props传参
// 父组件
class App extends Component {
  render() {
    return (
      <Fragment>
        <Child name="卡卡罗特" jineng={this.bianshen}></Child>
      </Fragment>
    );
  }

  bianshen() {
    return "变身超级赛亚人";
  }
}
// 子组件
class Child extends Component {
  render() {
    return (
      <div>
        {this.props.name}
        {this.props.jineng()}
      </div>
    );
  }
}

export default App;

运行结果 

 函数组件中传递数据

<script type="text/babel">

    //props基本使用
    function ShowSaiyaren(props){
        return (
            <div>赛亚人有:{props.a} ---{props.b}</div>
        )
    }

    //使用对象进行传递多个数据
    let saiyaren={
        a:"卡卡罗特",
        b:"贝吉塔"
    }
       ReactDOM.render(<ShowSaiyaren{...saiyaren} />,document.getElementById("demoReact"));    

    </script>

运行结果 

提示:

组件无论是使用函数声明还是通过 class 声明,都决不能修改自身的 props

正常情况下 props 的拥有权不属于当前组件,是别人传给你的,你用的时候用 props 来引用,所以修改的权限应该由上面来决定。

文章内容如有错误,请以官方文档为准

最后想说,文章借鉴了很多大佬的思路,非常感谢大佬们的无私共享!


 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一章:React基础 1.react基础 2. JSX语法 3. 如何给组件添加样式 4. 如何添加自定义组件 5. 创建无状态组件 6. 学习render方法 7. 组件的属性 8. 组件的状态 9. 理解react中的this 10. 使用refs操作DOM元素 11. 子组件children属性 12. 组件的生命周期之创建 13. 组件的生命周期之销毁 14. 高阶组件 第二章: 使用React-router玩转路由管理 1. react路由介绍 2. 跑通基本的开发环境 3. 跑通基本路由 4. 使用Link组件进行导航切换 5. 路由的嵌套使用 6. 设置路由激活状态 7. 路由参数 8. 默认路由 9. indexlink 10. 路由重定向 11. browser history 12. webpack后端服务器 13. 路由切换 14. 钩子函数 15. 扩展内容 第三章:初入JS函数式编程的世界 1.什么是函数式编程 2. 函数式编程的好处 3. 函数是一等公民 4. 纯函数的作用 5. 柯里化函数 6. 函数组合 7. 高阶函数    第四章:深入浅出redux应用 1. Redux课程介绍 2.什么是Redux 3.搭建开发环境 4.理解action-store-reducer 5.理解dispatch 6.subscribe订阅 7.action-creator 8.react-redux介绍 9.实现计数器应用(1) 10.实现计数器应用(2) 11.实现计数器应用(3) 12.实现计数器应用(4) 13.Redux中间件(1) 14.Redux中间件(2) 15.Redux中间件(3) 16.Redux中间件(4) 17.logger中间件 18.thunk中间件实现异步action 19.超棒的调试工具 20.区分开发和生产环境 21.react-router-redux 22.中间件优化    第五章:使用React构建一个应用 1. 组件化思维解析应用功能 2. 跑通基本路由 3. 创建头部搜索组件 4. 封装展示用户信息的组件 5. state、props在传递数据的使用 6. 接入数据 7. 组件功能开发 8. PropTypes接口约束 9. 请求github API数据进行展示    第六章:最新React架构打造炫酷个人简历实战 01-整体项目介绍和内容分析 02-项目需求分析和组件化思考 03-跑通项目基础架构(一) 04-跑通项目基础架构(二) 05-目录规划指导并跑通第一个组件 06-添加container下各组件并跑通路由 07-react-addons-css-transition-group 08-NavMenu导航组件开发(一) 09-NavMenu导航组件开发(二) 10-NavMenu导航组件开发(三) 11-实现collapse折叠功能 12-实现路由激活状态的样式 13-目录层级调整 14-项目首页开发 15-About组件实现及样式优化 16-从业务过程到组件化思维的过渡 17-Skills组件开发 18-Project组件开发与Timeline的使用 19-Project组件和axios 20-Project组件样式开发 21-Contact组件开发(一) 22-Contact组件开发(二) 23-Contact组件开发(三)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值