您现在的位置是:亿华云 > IT科技
React 入门第四步:组件间的值传递 Props
亿华云2025-10-04 03:37:54【IT科技】3人已围观
简介本文转载自微信公众号「勾勾的前端世界」,作者西岭。转载本文请联系勾勾的前端世界公众号。父组件向子组件传值 -普通传值父级组件传递数据默认情况由父级组件传递数据到子级组件,我们将需要传递的数据,以属性的
本文转载自微信公众号「勾勾的门第前端世界」,作者西岭。步组转载本文请联系勾勾的传递前端世界公众号。
父组件向子组件传值 -普通传值
父级组件传递数据
默认情况由父级组件传递数据到子级组件,门第我们将需要传递的步组数据,以属性的传递方式,写入组件中,门第如下:
import React fromreact // 引入单文件组件 import PropsClass from./PropsClass import PropsFun from./PropsFun // 要传递的步组数据 const toData = [ { id:1,name:"刘能",age:66}, { id:2,name:"广坤",age:16} ] functionApp() { return ( <div> { /* 将需要传递的数据,以属性的传递方式,写入组件 */} <PropsClasstoClass={ toData}/> <PropsFuntoFun={ toData}/> </div> ) } exportdefault App这样就完成了父级组件向子级组件传递数据的门第任务。
那么组件又分为函数组件和类组件。步组下面,传递我们分别展示类组件和函数组件是门第如何获取传递进来的数据的。
我们先看类组件的步组获取方式。
class 子级组件接受数据
class 组件中使用 this.props.xx 属性名获取父级组件传递的传递数据:
import React, { Component, Fragment } fromreact exportclass PropsClass extends Component { render() { return ( <Fragment> <h1>接受Props 数据</h1> { console.log(this.props.toClass)}{ /* 打印数据 */} { /* 遍历数据 */} { this.props.toClass.map(item => ( <divkey={ item.id}> <span>{ item.name}</span><span>{ item.age}</span> </div> ) )} </Fragment> ) } } exportdefault PropsClass类组件中 this 操作相对容易,因此,React 默认会将父级组件的传入的数据放入 props 属性中。而在类组件中,如代码所示,源码库我们就可以直接使用 this.props 来获取数据了。
函数子级组件接受数据
函数组件中,Props 数据会默认传入函数,因此需要在函数形参中获取,直接使用即可。
import React, { Fragment } fromreact // 函数形参获取Props 传值 functionPropsFun(props) { return ( <Fragment> <h1>函数接受Props </h1> { console.log(props.toFun)} { /* 遍历数据 */} { props.toFun.map(item=> ( <divkey={ item.id}> <span>{ item.name}</span> </div> ) )} </Fragment> ) } exportdefault PropsFun前面我们学习了父级组件向不同的子级组件传递数据,以及子级组件如何接受数据并处理,而如果父级组件传递较为复杂的数据时,如何传递数据,如何在子组件中使用,就需要我们进一步学习了解。
父组件向子组件传值 -解构传值
父级组件传递数据
传递普通数据,前面我们已经接触过了,如果要是传递的数据是数组或者对象,我们应该如何处理呢?
最直接的办法就是在传递时,在父级组件中将数据先进行解构,因为解构出来的数据,正好就是符合组件 “属性” 写法的:
import React fromreact // 引入单文件组件 import PropsClass from./PropsClass import PropsFun from./PropsFun // 要传递的数据 const toData = [ { id:1,name:"刘能",age:66}, { id:2,name:"广坤",age:16} ] functionApp() { return ( <div> { /* 结构数据并传入*/} <PropsClass{ ...toData[0]}/> <PropsFun{ ...toData[1]}/> </div> ) } exportdefault App上面是解构传参。而在子级组件中应用时,与普通的应用并没有区别,云服务器按照解构好的对应格式进行接收就可以了。
下面我们分别展示类组件和函数组件中获取解构传参的方式。
class 子级组件接受数据
依然使用 props 获取传参。
import React, { Component, Fragment } fromreact exportclass PropsClass extends Component { render() { // 获取传入的解构数据 const { name,age} =this.props return ( <Fragment> <h1>Class 接受Props 数据</h1> { console.log(name,age,--)}{ /* 打印数据 */} </Fragment> ) } } exportdefault PropsClass函数子级组件接受数据
依然使用函数形参获取数据。
import React, { Fragment } fromreact // 函数形参获取Props 传值 (结构) functionPropsFun({ name, age }) { return ( <Fragment> <h1>函数接受Props </h1> fun 数据: { console.log(age, name)} <div> <span>{ name}</span> <span>{ age}</span> </div> </Fragment> ) } exportdefault PropsFun设置默认值
在一定的条件下,父级组件即便没有传入数据,子组件依然需要展示相关内容。那么此时,我们就可以在子组件中设置默认值来填充,当父级组件没有传入数据时,子组件使用默认数据,而如果父级组件有数据传入,则替换默认值。
父级组件可以传入数据,也可以不传入:
import React fromreact // 引入单文件组件 import PropsClass from./PropsClass import PropsFun from./PropsFun functionApp() { return ( <div> { /* 父级组件没有传值则使用子组件的默认值,传递则替换 */} <PropsClassnames="llll"/> <PropsFun/> </div> ) } exportdefault App类组件设置默认值
class 子组件中使用 static defaultProps 设置默认值,当然,我们依然需要从 this.props 中获取。
import React, { Component, Fragment } fromreact exportclass PropsClass extends Component { // 此时我们就设置了 props 的默认值, // 如果父组件没有传递数据,则默认使用 // 如果传递了数据,则替换默认值 static defaultProps = { names:西岭老湿, age:18 } render() { // 获取组件传入的数据,可能是默认值,也可能是传入的网站模板数据 const { names,age} =this.props return ( <Fragment> <h2>Class 组件</h2> <p>{ names}</p> <p>{ age}</p> </Fragment> ) } } exportdefault PropsClass函数组件设置默认值
函数组件需要使用组件名 .defaultProps 设置一个对象作为默认值,依然使用形参获取:
import React, { Fragment } fromreact // 函数形参获取Props 传值 (结构) functionPropsFun({ name, age }) { return ( <div> <h2>函数组件</h2> <p>{ name}</p> <p>{ age}</p> </div> ) } // 函数组件需要使用组件名.defaultProps设置一个对象 PropsFun.defaultProps= { name:西岭, age:16 } exportdefault PropsFun如果不想在子组件的形参接收时解构,也可以直接获取 props。
import React, { Fragment } fromreact // 函数形参获取Props 传值 (结构) functionPropsFun(props) { return ( <div> <h2>函数组件</h2> <p>{ props.name}</p> <p>{ props.age}</p> </div> ) } // 函数组件需要使用组件名.defaultProps设置一个对象 PropsFun.defaultProps= { name:西岭, age:16 } exportdefault PropsFun向子组件传递 JSX
父级组件传递 JSX
在父级组件中,需要向子级组件传递 JSX ,需要将 jsx 写在组件的双标签内。
import React fromreact // 引入单文件组件 import PropsClass from./PropsClass import PropsFun from./PropsFun functionApp() { return ( <div> <h1>我是App</h1> { /* 需要传递 JSX ,写在组件双标签内*/} <PropsClass> { /* 可以传递多个标签*/} <p>父级组件中传入的JSX, p标签,App-Class组件</p> <span>父级组件中传入的JSX,span标签,App-Class组件</span> </PropsClass> <PropsFun/> </div> ) } exportdefault Appclass 子组件接收 JSX
使用 this.props.children 可以接收父级组件中传入的全部 JSX。
import React, { Component, Fragment } fromreact exportclass PropsClass extends Component { render() { return ( <Fragment> <h2>Class 组件</h2> { /* 接收 JSX ,可以接收多个*/} { this.props.children} </Fragment> ) } } exportdefault PropsClass函数子组件接收 JSX
函数组件中获取 jsx ,可以直接使用 props 接收参数。
import React, { Fragment } fromreact // 函数组件中获取jsx ,可以直接使用 props 接收参数 functionPropsFun(props) { return ( <div> <h2>函数组件</h2> <p>{ props.name}</p> <p>{ props.age}</p> { props.children} </div> ) } // 函数组件需要使用组件名.defaultProps设置一个对象 PropsFun.defaultProps= { name:西岭, age:16 } exportdefault PropsFun很赞哦!(341)
相关文章
- 6、提示添加成功,点击确认进行最后的确定操作。一般10分钟就解析生效,可以用域名进行访问了。
- 新手网站转让要如何做?网站转让域名有什么操作?
- wang域名为何遭域名投资者疯狂抢注?什么缘由?
- 怎么看是顶级域名还是一级域名?有什么方法区分吗?
- 互联网中的地址是数字的IP地址,域名解析的作用主要就是为了便于记忆。
- 新企业更换域名应该怎么做?有哪些细节需要注意?
- 新手怎么做把握域名市场?有什么方法?
- 现在短视频平台如何选域名?短视频平台域名是怎样的?
- 投资各类域名就像到处打游击战,结果处处失败。因为这样,对任何一个中国域名市场的走势和价格都没有准确的把握,所以最好缩小范围,准确把握战场态势,埋伏。
- 所谓的天价域名是什么?新手应该关注什么域名?
站长推荐
用户邮箱的静态密码可能已被钓鱼和同一密码泄露。在没有收到安全警报的情况下,用户在适当的时间内不能更改密码。在此期间,攻击者可以随意输入帐户。启用辅助身份验证后,如果攻击者无法获取移动电话动态密码,他将无法进行身份验证。这样,除非用户的电子邮件密码和手机同时被盗,否则攻击者很难破解用户的邮箱。
网站目录和二级域名的区别是什么?做站有何不同?
域名时代com域名有什么趋势?域名又会有何发展?
什么是域名抢注?为什么要域名抢注?
2、定期提交和投标域名注册。例如,益华网络点击“立即预订”后,平台会抢先为客户注册域名。当然,一个域名可能会被多个客户预订,所以出价最高的人中标。
域名注册常见问题有哪些?域名注册常见问题总结
新手认知中的pw域名是怎样的?大家怎么看待pw域名?
网站被攻击可以隐藏域名隐私吗?新手怎么操作?