react 的 传递属性 props 详解

本文详细介绍了React中的传递属性(props)的概念,包括props的来源、如何传递和使用属性、以及如何进行类型检查以确保数据正确性。通过示例展示了props在组件复用中的关键作用,强调了不应修改props的原则。
摘要由CSDN通过智能技术生成

什么是 props ?

就是你在使用一个组件的时候希望这个组件可以复用,希望他里面的形态、所需的数据可以在我们调用的时候可以动态的传进去。

props 哪里来的?

我们组件使用类创建的时候你需要继承 React.component,这个 props 就是继承React 来的

  • 打印当前实例 console.log(this)
    在这里插入图片描述

传递属性

<组件名 属性名=值 属性名2=值2 .. />

propName="字符"  propName={js数据类型}
  • 调用组件名的时候可以传递一个或多个属性
  • 属性的名字是小驼峰
    • 他的值双引号就是字符串,
    • 单花括号就是 jsx 的表达式
    • 表达式就是一个对象后面掉一个 api() 就是一个表达式,声明一个变量就是语句了,调用一个变量就是表达式了

使用属性

{this.props.属性名}
  • this 代表的是组件本身(将来的实例)
    • 在类里面使用 this 它指向的是组件本身
    • 上图中我们看到 组件本身是有 props 的 ,就然 this代表组件本身,那我们就可以通过 this.props.xxx来获取我们想要的信息
  • 对象无法直接通过{对象}展示
    • 在 react 在 react-dom 渲染时,数据里面的对象拉出来不可以之间加载,要精确到里面的键才可以

使用展示:


import React from 'react';
import ReactDom from 'react-dom';

//props  传递给组件的属性(数据)
class Nav extends React.Component{
  render(){
    return (
      <nav>
        <a>{this.props.json.aa}</a>
        <a href="http://www.baidu.com">react</a>
        <a href="http://www.baidu.com">组件</a>
      </nav>
    );
  }
}
class App extends React.Component{
  render(){
    return (
      <div>
        <Nav json={{aa:1,bb:2}}/>
        <Footer text="copy right heheda123"/>
      </div>
    )
  }
}

ReactDom.render(
  <App/>,
  document.querySelector('#root')
);

图示介绍

在这里插入图片描述

类型检查

  • 如果别人在调用我们的组件的时候乱传不同的数据会导致我们数据可能无法产生预期效果
  • 这时就需要借助第三方类型检查库
  • 需要下载 yarn add prop-types -save /或者/ npm install prop-types -save
  • react 组件就是一个类,类上面就有静态属性 defaultPropspropTypes
import propsTypes from 'prop-types'

//默认值:		
组件.defaultProps={
	propName:,:,
}

//类型约定:
组件.propTypes={
	propsName:propsTypes库.类型名,
	xx:类型,
}
//propsTypes.array/bool/func/number/object/string

//必传参数
propName: propsTypes库.类型名.isRequired

示例:

Input.defaultProps = {
  value:'',
  onChange:()=>{},
  name:''
};

Input.propTypes={
  value: propsTypes.string,
  name: propsTypes.string,
  onChange: propsTypes.func
};

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值