React入门Today.2(JSX、元素渲染)
2020-02-17 03:10
441 查看
JSX
- JSX是javaScripet的语法扩展,但它具有JavaScripet的所有功能
注:使用JXS必须使用CDN的获得babel的UMD版本,因为babel内嵌JSX的支持
因为 JSX 语法上更接近 JavaScript 而不是 HTML,所以 React DOM 使用 camelCase(小驼峰命名)来定义属性的名称,而不使用 HTML 属性名称的命名约定。 - 使用JSX
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>JSX</title> <script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script> <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script> <script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script> </head> <body> <div id="box_JSX" ></div> <script type="text/babel"> {/*这是一个单行注释*/} /*这是一个多行注释 *创建一个名为name变量,const类似于java中的常量,申明了值就不允许改变。 */ const name='Lance'; {/*在JSX中使用name*/} const element=<h1>欢迎来到我的博客,{name}</h1> ReactDOM.render( element, document.getElementById("box_JSX") ); </script> </body> </html>
运行结果
ReactDOM.render()
是React最基本的方法,用于将其中标签语句转换为HTML,并插入指定的DOM节点。- 这个方法当中第一个参数为创建的模板,若插入多个DOM元素,外层需使用一个标签进行包裹,例如
< div >
,第二个参数为模板插入的位置,若要创建的某个元素增加class属性,不能直接定义class,而要用className
,应为class是JavaScript中的保留字。
–试试调用 JavaScript 函数
formatName(user)的结果,并将结果嵌入到
< h1 >元素中。
function formatName(user){ return user.firstName+" "+user.lastName; } const user={ firstName:'Lance', lastName:'pig' }; const element=<h1>hello,{formatName(user)}</h1> ReactDOM.render( element, document.getElementById("box_JSX") );
代码过程:
首先会渲染界面,进入
ReactDOM.render()方法中,获取模板element的值,获取过程中,调用
formaName函数,将对象
user传递参数过去,返回
user对象中的属性。
运行结果
-
JSX也是一个表达式
编译之后,JSX表达式转为普通的JavaScript函数调用,并且对其取值后得到JavaScript对象。 -
JSX特定属性
可以通过使用引号将属性值指定为字符串字面量,例:const element=<div tabIndex="0></ div>;
也可以使用大括号,在属性值中插入一个JavaScript表达式
const element=< img src={user.avatarUrl}></ img>
元素渲染
- React中的元素创建时开销及小的普通对象。
- React DOM 负责更新DOM与React中的元素保持一致。
- React是不可变对象,且只会更新她需要更新的部分,大多数React 应用只会调用一次
ReactDOM.render()
。 - 关于React是不可变对象,通俗理解就是数据不变页面渲染就不变,React是单页面应用,根据数据渲染的。数据变了就会更新页面。
- 点赞
- 收藏
- 分享
- 20000 文章举报
![](https://g.csdnimg.cn/static/user-reg-year/1x/2.png)
相关文章推荐
- React入门Today.3(组件与Props)
- React入门Today.4(State与生命周期)
- React入门Today.5(事件处理与条件渲染)
- react路由时,不能正常渲染,需要刷新,才能渲染
- React脚手架安装及环境变量解析
- 《React设计模式+最佳实践》最新
- React UI 库:React Suite 3.4.5 版本更新
- 前端随心记---------React简介(1)
- ReactiveCocoa RACObserve subscribeNext 时,只有值不一样时才响应
- 【天赢金创】我是如何看待React 组件开发
- 引入react-native-swiper报错
- webstorm下react项目出现cannot find declaration的解决办法
- React学习总结(一)
- React学习总结(二)
- react 官方文档阅读总结
- 优秀的react框架的开源ui库 -- Pile.js
- 玩转 React【第02期】:恋上 React 模板 JSX
- 玩转 React 【第03期】:邂逅 React 组件
- react是否引入{Component}的区别
- 使用React Navtive框架准备工作