react jsx语法

JSX javascript+html 一种把js和html混合书写的语法,这种语法浏览器不支持,最终会通过babeljs转译成creatElememnt语法,React.createElement("h1", null, "hello");
let ele1 = <h1>hello</h1>
import React from ‘react‘;
import ReactDOM from ‘react-dom‘;

//JSX javascript+html 一种把js和html混合书写的语法,这种语法浏览器不支持,最终会通过babeljs转译成creatElememnt语法,React.createElement("h1", null, "hello");
let ele1 = <h1>hello</h1>
//在babel转义的时候会把ele1转成ele2
// debugger
let ele2 = React.createElement("h1", null, "hello")
console.log(ele2)
ReactDOM.render(
  <h1>hello</h1>,
  document.getElementById(‘root‘)
);

* 1.jsx只是一个语法糖,最终会被编译成React.createElement

* 2.ReactElement是构建react应用的最小单位

* 3.react元素其实就是一个普通的js对象 {type:‘h1‘,props:{children:‘hello‘}}

let ele1 = <h1
id="hello"
className="title">hello</h1>
//在babel转义的时候会把ele1转成ele2
// debugger
// let ele2 = React.createElement("h1", null, "hello")
console.log(ele1) //{type:‘h1‘,props: {id: "hello", className: "title", children: "hello"}}
ReactDOM.render(
  ele1,
  document.getElementById(‘root‘)
); 

一:JSX还可以作为一个变量 用在if和for循环里

 function greeting(name) {
   return(
   <div>hello {name}</div>
   )
 }
let ele = greeting(‘leah‘)
ReactDOM.render(ele,document.getElementById(‘root‘))

二:循环数组

let arr=[‘1‘, ‘2‘, ‘3‘]
let res = []
for(let i = 0; i <arr.length; i++){
  res.push(<li key={i}>{arr[i]}</li>) //创建li元素
}
//将li元素进行渲染
ReactDOM.render(<ul >{res}</ul>,document.getElementById(‘root‘))

三:React.Children.map方法

let ele = (
  <div>
     <span>1</span>
     <span>2</span>
     <span>3</span>
  </div>
)
ReactDOM.render(<div>{ele}</div>,document.getElementById(‘root‘))

现在想把每一项span用一个div包裹起来,就可以用React.Children.map方法

let spans = [
     <span>1</span>,
     <span>2</span>,
     <span>3</span>
]
let divs = React.Children.map(spans,(item,index) => <div key={index}>{item}</div>)
ReactDOM.render(<div>{divs}</div>,document.getElementById(‘root‘))

四、元素的更新:

每隔一秒返回一个新的时间

let ele = <div>{new Date().toLocaleString()}</div>
setInterval(() => {
  ele.props.children = new Date().toLocaleString()
  ReactDOM.render(ele,document.getElementById(‘root‘))
}, 1000);

这段代码会报错:TypeError: Cannot assign to read only property ‘children‘ of object ‘#<Object>‘

意思是React元素的属性是不可改的,如果需要修改每次都需要创建一个新的元素,所以需要做如下修改

setInterval(() => {
  let ele = <div>{new Date().toLocaleString()}</div>
  ReactDOM.render(ele,document.getElementById(‘root‘))
}, 1000);

源码里面是对对象进行了冻结,不能修改不能删除,Object.freeze,原理是把属性的writable=false

原文地址:https://www.cnblogs.com/lyt0207/p/12663742.html

时间: 2024-10-10 09:11:46

react jsx语法的相关文章

React JSX语法说明

什么是JSX? 在用React写组件的时候,通常会用到JSX语法,粗看上去,像是在Javascript代码里直接写起了XML标签,实质上这只是一个语法糖,每一个XML标签都会被JSX转换工具转换成纯Javascript代码,当然你想直接使用纯Javascript代码写也是可以的,只是利用JSX,组件的结构和组件之间的关系看上去更加清晰. var MyComponent = React.createClass({/*...*/}); var myElement = <MyComponent som

React之JSX语法

1. JSX的介绍 ??JSX(JavaScript XML)--一种在React组件内部构建标签的类XML语法.react在不使用JSX的情况下一样可以工作,然而使用JSX可以提高组件的可读性,因此推荐使用JSX. 基于ECMAScript的一种新特性 一种定义带属性树结构的语法 ??JSX的特性: ??它具备以下好处: 更加熟悉 更加语义化 更加直观 抽象化 关注分离点 2.JSX的使用 React对大小写敏感,如果是自定义组件,则必须首字母大写,如果是DOM自带的标签,则要小写(比如div

Webstorm 不识别es6 import React from ‘react’——webstorm不支持jsx语法怎么办

webstorm不支持jsx语法怎么办? 参考:webstorm不支持jsx语法怎么办 I spent ages trying to fix this. Every solution talks about 'setting options'. I don't know what that means. Finally, I figured it out. You can just include a commented out line at the top of the file /*jsh

react入门-----(jsx语法,在react中获取真实的dom节点)

1.jsx语法 1 var names = ['Alice', 'Emily', 'Kate']; 2 <!-- HTML 语言直接写在 JavaScript 语言之中,不加任何引号,这就是 JSX 的语法,它允许 HTML 与 JavaScript 的混写 --> 3 ReactDOM.render( 4 <div> 5 { 6 names.map(function (name) { 7 return <div>Hello, {name}!</div> 8

react的jsx语法

在webpack.config.js中配置解析的loader { test:/\.jsx?$/, use:{ loader:"babel-loader", options:{ presets:["@babel/env","@babel/react"] } } }, jsx对象就是js对象!只不过jsx需要事先编译,才转为js对象! 在默认情况下,React DOM会将所有嵌入JSX的值进行编码.这样可以有效避免xss攻击. sx有个强大的地方就是

react实战项目开发(2) react几个重要概念以及JSX语法

前言 前面我们已经学习了利用官方脚手架搭建一套可以应用在生产环境下的React开发环境.那么今天这篇文章主要先了解几个react重要的概念,以及讲解本文的重要知识JSX语法 React重要概念 [思想] React 的核心思想是:封装组件,各个组件维护自己的状态和 UI,当状态变更,自动重新渲染整个组件. 如果我们使用react编写的话,会把他拆分成一个一个的小组件进行编写方便管理复用性高,例如我们把登录拆分成一个组件编写,如果以后公司其它地方需要用到,那么就可以直接使用. 看一段代码感受下:

关于React之JSX语法理解

**理解:**javascript和HTML的结合,碰到<就按照HTML来解析,碰到{}就按照js来解析.也可以理解为可以在js代码书写HTML标签,每个标签最终都会转化为js代码来运行.他的语法规则大致如下: 1.必须有根元素,即最外层有且只有一个标签:2.所有的标签必须闭合:3.对大小写敏感,区分是组件还是Html标签:4.属性值必须加引号或者加{};5.标签内放"<"会报错,因为他会按照Html来解析:7.数组的循环(每个元素都会返回一个react组件);8.JSX允

【React 6/100】 React原理 | setState | JSX语法转换 | 组件更新机制

****关键字 | setState | JSX语法转换 | 组件更新机制 组件更新机制 setState() 的两个作用 修改state 更新组件 过程:父组件重新渲染时,也会重新渲染子组件,但只会渲染当前组件子树(当前组件以其所有子组件) 组件性能优化 减轻state 减轻state:只存储跟组件渲染相关的数据(比如:count/ 列表数据 /loading等) 注意:不用做渲染的数据不要放在state中 对于这种需要在多个方法中用到的数据,应该放到this中 避免不必要的重新渲染 组件更新

React教程:JSX语法基础

1.基本概念: React 使用 JSX 来替代常规的JavaScript. JSX 是按照 XML 语法规范 的 JavaScript 语法扩展. JSX 语法的本质:并不是直接把 JSX 渲染到页面上,而是内部先转换成了 createElement 形式,再渲染的. 2. JSX 的优点: JSX 执行更快,因为它在编译为 JavaScript 代码后进行了优化: 它是类型安全的,在编译过程中就能发现错误: 使用 JSX 编写模板更加简单快速. 3.JSX语法基础: JSX 注释:推荐使用