React学习笔记 - 组件Props
React Learn Note 4
React学习笔记(四)
标签(空格分隔): React JavaScript
三、组件&Props
组件可以将UI切分成一些独立的、可复用的部件,这样你就只需专注于构建每一个单独的部件。
组件接收props,返回react元素。
1. 函数定义\类定义组件
最简单组件方式 - 函数定义组件:
// 函数定义组件
function Welcome(props) {return <h1>Hello, {props.name}!</h1>;
}
ES6 class定义组件,效果同上:
// ES6 class定义组件
class Welcome extends React.Component {render() {return <h1>Hello, {this.props.name}!</h1>;}
}
2. 组件渲染
将组件作为React元素,标签的属性作为props键值:
const element5_1 = <Welcome name="Sara"></Welcome>;
ReactDOM.render(element5_1,document.getElementById('root5')
);
警告:
组件名称必须大写字母开头。
3. 组合组件
React组件也可以嵌套。
function App() {return (<div><Welcome name="Bob"></Welcome><Welcome name="Cahal"></Welcome><Welcome name="John"></Welcome></div>);
}ReactDOM.render(<App></App>,document.getElementById('root6')
);
警告:
组件的返回值只能有一个根元素。所以将多个Welcome
元素用div
包裹。
4. 提取组件
可以将组件切分为更小的组件。
function formatDate(date) {return date.toLocaleTimeString();
}
function Comment(props) {return (<div className="Comment"><div className="UserInfo"><img src={props.author.avatarUrl} alt={props.author.name}/><div className="UserInfo-name">{props.author.name}</div></div><div className="Comment-text">{props.text}</div><div className="Comment-date">{formatDate(props.date)}</div></div>);
}ReactDOM.render(<Comment author={{avatarUrl: '../static/img/zhifibao_key.jpg', name: 'Jessie'}} text="This is comment text." date={new Date()}></Comment>,document.getElementById('root7')
);
这个组件接收author(对象)、text(字符串)、以及date(Date对象)作为props。是个复杂的组件。接下来我们提取拆分这个组件。
首先提取Avatar组件:
// 提取组件
function Avatar(props) {return (<img src={props.user.avatarUrl} alt={props.user.name} className="Avatar"/>);
}function UserInfo(props) {return (<div className="UserInfo"><Avatar user={props.user}></Avatar><div className="UserInfo-name">{props.user.name}</div></div>);
}// 最终Comment组件被简化为
function Comment2(props) {return (<div className="Comment"><UserInfo user={props.author}></UserInfo><div className="Comment-text">{props.text}</div><div className="Comment-date">{formatDate(props.date)}</div></div>);
}ReactDOM.render(<Comment2 author={{avatarUrl: '../static/img/zhifibao_key.jpg', name: 'Xiaoyu Lee'}} text="Wow, this is very beautiful." date={new Date()}></Comment2>,document.getElementById('root8')
);
5. Props的只读性
无论是使用函数或是类来声明一个组件,它决不能修改它自己的props。
The end... Last updated by: Jehorn, Jan 07, 2018, 5:44 PM
- React学习笔记(一)- Hello World
- React学习笔记(二)- JSX简介
- React学习笔记(三)- 元素渲染
- React学习笔记(四)- 组件&Props
转载于:https://www.cnblogs.com/jehorn/p/8228923.html
React学习笔记 - 组件Props相关推荐
- React学习:组件之间的关系、参数传递-学习笔记
文章目录 React学习:组件之间的关系.参数传递-学习笔记 父到子传递参数 子-父 父-孙 兄弟组件传参 React学习:组件之间的关系.参数传递-学习笔记 父到子传递参数 <!DOCTYPE ...
- react组件卸载调用的方法_好程序员web前端培训分享React学习笔记(三)
好程序员web前端培训分享React学习笔记(三),组件的生命周期 React中组件也有生命周期,也就是说也有很多钩子函数供我们使用, 组件的生命周期,我们会分为四个阶段,初始化.运行中.销毁.错误处 ...
- react学习笔记1--基础知识
什么是react A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES[React是一个用于构建用户界面的JavaScript库.] React之所以快, ...
- react render没更新_web前端教程分享React学习笔记(一)
web前端教程分享React学习笔记(一),React的起源和发展:React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写 ...
- React学习笔记(五) 状态提升
状态提升究竟是什么东西呢?别急,下面让我们一步一步来看看究竟要怎么使用状态提升 假设我们有这样一个需求,提供两个输入框(分别属于两个组件),保证输入框里面的内容同步 好,下面我们先来封装一个输入框组件 ...
- day4 vue 学习笔记 组件 生命周期 数据共享 数组常用方法
系列文章目录 day1学习vue2笔记 vue指令 day2 学习vue2 笔记 过滤器 侦听器 计算属性 axios day3 vue2 学习笔记 vue组件 day4 vue 学习笔记 组件 生命 ...
- 【Vue】学习笔记-组件传值的数据累加器
[Vue]学习笔记-组件传值的数据累加器 前言 父级组件 购物车组件 计数器组件 常见错误总结 前言 组件传值的数据累加器可以分为三个部分 App.vue为父级组件 Carts.vue表示购物车 Co ...
- React学习笔记:入门案例
React学习笔记:入门案例 React 起源于 Facebook 内部项目,因为市场上所有 JavaScript MVC 框架都不令人满意,公司就决定自己写一套,用来架设 Instagram 的网站 ...
- React学习笔记八-受控与非受控组件
此文章是本人在学习React的时候,写下的学习笔记,在此纪录和分享.此为第八篇,主要介绍非受控组件与受控组件. 目录 1.非受控组件 1.1表单提交案例 1.2案例的总结 2.受控组件 2.1受控组件 ...
最新文章
- WCF+Nhibernate 序列化的问题。
- ML之DR之PCA:利用PCA对手写数字图片识别数据集进行降维处理(理解PCA)
- bootstraptable控制分页_bootstrap table分页(前后端两种方式实现)
- MySQL 创建索引和索引效率验证
- python随机产生10个随机数_python(random模块)取10以内的随机数
- 浏览——用户自定义路径
- ASP.NET-关于Global.asax的作用
- pytorch 保存模型出错, pickler.dump(obj) Error
- php+5.3.15下载,Rapid PHP2018
- 手机modem开发之VoLTE信令
- 易语言斗鱼弹幕助手源码
- win10安装Visual Studio 2019失败
- Gan 和 StyleGAN 架构
- 比较IC卡、ID卡、M1卡、CPU卡它们之间有什么区别
- 2021年Wordpress博客装修美化(二)
- 如何通过微信与手机连接到服务器,本地服务器和微信服务器的具体通信过程是怎样的...
- 1.网络安全之windows系统知识
- 语法练习:left2
- 用基础jQuery制作个性化留言板
- 传奇服务端初次使用极限插件必看步聚