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相关推荐

  1. React学习:组件之间的关系、参数传递-学习笔记

    文章目录 React学习:组件之间的关系.参数传递-学习笔记 父到子传递参数 子-父 父-孙 兄弟组件传参 React学习:组件之间的关系.参数传递-学习笔记 父到子传递参数 <!DOCTYPE ...

  2. react组件卸载调用的方法_好程序员web前端培训分享React学习笔记(三)

    好程序员web前端培训分享React学习笔记(三),组件的生命周期 React中组件也有生命周期,也就是说也有很多钩子函数供我们使用, 组件的生命周期,我们会分为四个阶段,初始化.运行中.销毁.错误处 ...

  3. react学习笔记1--基础知识

    什么是react A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES[React是一个用于构建用户界面的JavaScript库.] React之所以快, ...

  4. react render没更新_web前端教程分享React学习笔记(一)

    web前端教程分享React学习笔记(一),React的起源和发展:React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写 ...

  5. React学习笔记(五) 状态提升

    状态提升究竟是什么东西呢?别急,下面让我们一步一步来看看究竟要怎么使用状态提升 假设我们有这样一个需求,提供两个输入框(分别属于两个组件),保证输入框里面的内容同步 好,下面我们先来封装一个输入框组件 ...

  6. day4 vue 学习笔记 组件 生命周期 数据共享 数组常用方法

    系列文章目录 day1学习vue2笔记 vue指令 day2 学习vue2 笔记 过滤器 侦听器 计算属性 axios day3 vue2 学习笔记 vue组件 day4 vue 学习笔记 组件 生命 ...

  7. 【Vue】学习笔记-组件传值的数据累加器

    [Vue]学习笔记-组件传值的数据累加器 前言 父级组件 购物车组件 计数器组件 常见错误总结 前言 组件传值的数据累加器可以分为三个部分 App.vue为父级组件 Carts.vue表示购物车 Co ...

  8. React学习笔记:入门案例

    React学习笔记:入门案例 React 起源于 Facebook 内部项目,因为市场上所有 JavaScript MVC 框架都不令人满意,公司就决定自己写一套,用来架设 Instagram 的网站 ...

  9. React学习笔记八-受控与非受控组件

    此文章是本人在学习React的时候,写下的学习笔记,在此纪录和分享.此为第八篇,主要介绍非受控组件与受控组件. 目录 1.非受控组件 1.1表单提交案例 1.2案例的总结 2.受控组件 2.1受控组件 ...

最新文章

  1. WCF+Nhibernate 序列化的问题。
  2. ML之DR之PCA:利用PCA对手写数字图片识别数据集进行降维处理(理解PCA)
  3. bootstraptable控制分页_bootstrap table分页(前后端两种方式实现)
  4. MySQL 创建索引和索引效率验证
  5. python随机产生10个随机数_python(random模块)取10以内的随机数
  6. 浏览——用户自定义路径
  7. ASP.NET-关于Global.asax的作用
  8. pytorch 保存模型出错, pickler.dump(obj) Error
  9. php+5.3.15下载,Rapid PHP2018
  10. 手机modem开发之VoLTE信令
  11. 易语言斗鱼弹幕助手源码
  12. win10安装Visual Studio 2019失败
  13. Gan 和 StyleGAN 架构
  14. 比较IC卡、ID卡、M1卡、CPU卡它们之间有什么区别
  15. 2021年Wordpress博客装修美化(二)
  16. 如何通过微信与手机连接到服务器,本地服务器和微信服务器的具体通信过程是怎样的...
  17. 1.网络安全之windows系统知识
  18. 语法练习:left2
  19. 用基础jQuery制作个性化留言板
  20. 传奇服务端初次使用极限插件必看步聚

热门文章

  1. video safari不支持吗_您支持吗? 公园遛狗纳入 “不文明行为黑名单”
  2. c中的结构体嵌套问题_C中的结构
  3. java while循环_Java while循环
  4. jquery 弹出窗口_jQuery弹出窗口和工具提示窗口动画效果
  5. Web开发过程中需要学习的知识有哪些?
  6. 后疫情时代,人工智能发展的四大趋势
  7. 开课吧课堂:finally如何使用?作用是什么?
  8. day03 Python字典dict的增删查改及常用操作
  9. 新书推荐:可爱的Python
  10. 接口测试(二)--APP抓包