深入props --React进阶指南笔记

news/2024/11/29 6:42:14/

一次render的过程:

调用React.createElement形成新的element过程,新的element上就会有新的props属性(即重新渲染视图的关键)。

来看一个demo:

/* children 组件 */
function ChidrenComponent(){return <div> In this chapter, let's learn about react props ! </div>
}
/* props 接受处理 */
class PropsComponent extends React.Component{componentDidMount(){console.log(this,'_this')}render(){const {  children , mes , renderName , say ,Component } = this.propsconst renderFunction = children[0]const renderComponent = children[1]/* 对于子组件,不同的props是怎么被处理 */return <div>{ renderFunction() }{ mes }{ renderName() }{ renderComponent }<Component /><button onClick={ () => say() } > change content </button></div>}
}
/* props 定义绑定 */
class Index extends React.Component{state={  mes: "hello,React"}node = nullsay= () =>  this.setState({ mes:'let us learn React!' })render(){return <div><PropsComponent  mes={this.state.mes}  // ① props 作为一个渲染数据源say={ this.say  }     // ② props 作为一个回调函数 callbackComponent={ ChidrenComponent } // ③ props 作为一个组件renderName={ ()=><div> my name is alien </div> } // ④ props 作为渲染函数>{ ()=> <div>hello,world</div>  } { /* ⑤render props */ }<ChidrenComponent />             { /* ⑥render component */ }</PropsComponent></div>}
}

可以看到props 可以是什么?

  • ① props作为一个子组件渲染数据源
  • ② props作为一个通知父组件的回调函数
  • ③ props作为一个单纯的组件传递
  • ④ props作为渲染函数
  • ⑤ render props,和④的区别是放在了children属性上
  • ⑥ render component 插槽组件

props在组件实例上的样子:
如果PropComponent是一个类组件,那么可以直接通过this.props访问到它:
在这里插入图片描述


http://www.ppmy.cn/news/1129283.html

相关文章

centos给用户分配docker权限

原理 docker守护进程启动的时候&#xff0c;会默认赋予名为docker的用户组读写Unix socket的权限&#xff0c;因此只要创建docker用户组&#xff0c;并将当前用户加入到docker用户组中&#xff0c;那么当前用户就有权限访问Unix socket了&#xff0c;进而也就可以执行docker相…

linux权限机制,

目录 用户与组,id,passwd 查看登录用户whomi,who,w 创建用户 useradd 修改用户信息usermod 删除指定用户userdel 组 ​编辑创建修改删除组groupadd groupmod groupdel 权限 ls-l 修改文件所属用户&#xff0c;所属组 chown,chgrp(change group) 修改权限 chmod 默认权…

大模型Tuning分类

类型总结 微调&#xff08;Fine-tunning&#xff09; 语言模型的参数需要一起参与梯度更新 轻量微调&#xff08;lightweight fine-tunning&#xff09; 冻结了大部分预训练参数&#xff0c;仅添加任务层&#xff0c;语言模型层参数不变 适配器微调 &#xff08;Adapter-t…

oracle存储过程的优缺点

定义&#xff1a; 存储过程&#xff08;Stored Procedure &#xff09;是一组为了完成特定功能的SQL 语句集&#xff0c;经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数&#xff08;如果该存储过程带有参数&#xff09;来执行它。存储过程是数据库中的一个重要…

三个要点,掌握Spring Boot单元测试

单元测试是软件开发中不可或缺的重要环节&#xff0c;它用于验证软件中最小可测试单元的准确性。结合运用Spring Boot、JUnit、Mockito和分层架构&#xff0c;开发人员可以更便捷地编写可靠、可测试且高质量的单元测试代码&#xff0c;确保软件的正确性和质量。 一、介绍 本文…

Rust免杀 Shellcode加载与混淆2

前言 这是半年前我学习Rust和免杀时的一些记录&#xff0c;最近打开知识库看到了这篇半年前的笔记&#xff0c;并且发现我常逛的安全社区都比较少有人分享Rust以及Rust免杀的帖子&#xff0c;于是想着将这篇笔记分享出来供大家参考和指正。由于我写这篇文章时也刚刚开始接触Ru…

嵌入式Linux应用开发-第七章-RK3288和 RK3399的 LED驱动程序

嵌入式Linux应用开发-第七章-RK3288和 RK3399的 LED驱动程序 RK3288和 RK3399的 LED驱动程序7.3 RK3288和 RK3399的 LED驱动程序7.3.1 原理图7.3.1.1 fireflye RK3288的 LED原理图7.3.1.2 firefly RK3399的 LED原理图 7.3.2 所涉及的寄存器操作7.3.2.1 RK3288的 GPIO8_A1引脚7.…

23 Python的shutil模块

概述 在上一节&#xff0c;我们介绍了Python的argparse模块&#xff0c;包括&#xff1a;argparse模块中一些常用的类和函数。在这一节&#xff0c;我们将介绍Python的shutil模块。shutil模块是一个用于文件和文件夹操作的实用模块&#xff0c;它提供了一组用于处理文件和文件夹…