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的作用
作用:用于接收组件外部的数据 传递数据: 通过给组件标签添加属性 接收数据:函数组件通过 参数 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 来引用,所以修改的权限应该由上面来决定
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix