React使用JSX语法
目录:
1、在React项目中启用JSX语法 <--返回目录
JSX语法:符合xml规范的js语法
JSX语法的本质:在运行时,转换成React.createElement形式来执行
第一步:安装babel插件:
cnpm i babel-core babel-loader babel-plugin-transform-runtime -D
cnpm i babel-preset-env babel-preset-stage-0 babel-preset-react -D
第二步:webpack.config.js
var path = require('path')
// 导入在内存中自动生成index页面的插件
const HtmlWebPackPlugin = require('html-webpack-plugin')
const htmlPlugin = new HtmlWebPackPlugin({
template: path.join(__dirname, './src/index.html'),
filename: 'index.html' // 生成的内存中首页的名称
});
module.exports = {
mode: 'development',
plugins: [
htmlPlugin
],
module: {
rules:[
{ test:/\.js|jsx$/, use: ['babel-loader'], exclude: /node_modules/ }
]
}
}
第三步:添加.babelrc配置文件
{
"presets": ["env", "stage-0", "react"],
"plugins": ["transform-runtime"]
}
第四步:index.js使用JSX语法
import React from 'react'
import ReactDOM from 'react-dom' // 创建虚拟DOM元素
// 参数1: 元素名称; 参数2: 属性; 参数3-n: 子节点
// const myh1 = React.createElement('h1', {id: 'myh1'}, 'h1标签的文本')
// const mydiv = React.createElement('div', null, 'div文本', myh1) // div中包含了h1
const mydiv = <div id="mydiv">测试JSX语法</div>
// 将虚拟DOM渲染到页面
// 参数1: 虚拟DOM元素; 参数2: 容器
ReactDOM.render(mydiv, document.getElementById('app'))
第五步:npm run dev
走完上面五步,package.json:
{
"name": "webpack4.x-base",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "webpack-dev-server --open --port 3000 --hot --host 127.0.0.1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"babel-core": "^6.26.3",
"babel-loader": "^8.0.6",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"html-webpack-plugin": "^3.2.0",
"webpack": "^4.41.2",
"webpack-cli": "^3.3.10",
"webpack-dev-server": "^3.9.0"
},
"dependencies": {
"react": "^16.12.0",
"react-dom": "^16.12.0"
}
}
结果报错:

解决:
卸载babel-loader@8
cnpm un babel-loader
安装babel-loader@7,(安装"babel-loader": "^7.1.5")
cnpm i babel-loader@7 -D
2、在JSX中写js代码 <--返回目录
使用变量
import React from 'react'
import ReactDOM from 'react-dom' const msg = "hello";
const mydiv = <div id="mydiv">{msg}测试JSX语法</div>
ReactDOM.render(mydiv, document.getElementById('app'))
表达式
const a = 10;
const mydiv = <div id="mydiv">{a + 2}测试JSX语法</div>
ReactDOM.render(mydiv, document.getElementById('app'))
三元表达式
const flag = true;
const mydiv = <div id="mydiv">{flag ? '真' : '假'}测试JSX语法</div>
ReactDOM.render(mydiv, document.getElementById('app'))
为属性绑定值
const ptitle = "提示";
const myp = <p title={ptitle}>测试JSX语法</p>
ReactDOM.render(myp, document.getElementById('app'))
渲染jsx元素
const h1 = <h1>h1文本</h1>
const mydiv = <div>{h1}测试JSX语法</div>
ReactDOM.render(mydiv, document.getElementById('app'))
渲染jsx元素数组
const arr = [
<h1>h1</h1>,
<h2>h2</h2>
]
const mydiv = <div>{arr}测试JSX语法</div>
ReactDOM.render(mydiv, document.getElementById('app'))
将普通字符串数组转为jsx数组并渲染到页面
const strArray = [
'张无忌',
'周芷若',
'赵敏'
]
const nameArray = []
strArray.forEach(item => {
const temp = <h2>{item}</h2>
nameArray.push(temp)
})
const mydiv = <div>{nameArray}测试JSX语法</div>
ReactDOM.render(mydiv, document.getElementById('app'))
或
const strArray = [
'张无忌',
'周芷若',
'赵敏'
]
var nameArray = strArray.map(item => {
return <h3>{item}</h3>
})
const mydiv = <div>{nameArray}测试JSX语法</div>
ReactDOM.render(mydiv, document.getElementById('app'))
或
const strArray = [
'张无忌',
'周芷若',
'赵敏'
]
const mydiv = <div>{ strArray.map(item => <h4>{item}</h4>) }</div>
ReactDOM.render(mydiv, document.getElementById('app'))
3、使用JSX注意事项 <--返回目录
1)在jsx中写注释推荐: { /* 注释内容 */ }
2)为jsx中的元素添加class类名:需要使用className替代class;htmlFor替换label标签的for属性;
const str = '马尔代夫'
const divClass = 'box'
const mydiv = <div className={divClass}>{ str }</div>
ReactDOM.render(mydiv, document.getElementById('app'))
3)jsx语法中,所有标签必须闭合;
React使用JSX语法的更多相关文章
- 前端笔记之React(一)初识React&组件&JSX语法
一.React项目起步配置 官网:https://reactjs.org/ 文档:https://reactjs.org/docs/hello-world.html 中文:http://react.c ...
- 【JAVASCRIPT】React学习-JSX 语法
摘要 react 学习包括几个部分: 文本渲染 JSX 语法 组件化思想 数据流 JSX 语法 1. 定义 JSX 是javascript + xml 的合集,我们可以将javascript 与 ht ...
- react的jsx语法
在webpack.config.js中配置解析的loader { test:/\.jsx?$/, use:{ loader:"babel-loader", options:{ pr ...
- react 的JSX语法需要注意哪些点?
注释方式 ReactDOM.render( <div> {/*JSX 中的注释方式*/} </div>, document.getElementById('root') ) j ...
- React之JSX语法
1. JSX的介绍 JSX(JavaScript XML)——一种在React组件内部构建标签的类XML语法.react在不使用JSX的情况下一样可以工作,然而使用JSX可以提高组件的可读性,因此 ...
- React之jsx语法特性
jsx 语法,直接可以在js中使用html标签. 还可以通过花括号的形式,在html标签中,写js表达式. <div> { 1 + 2 } hello,world! </div> ...
- 3.react 基础 - JSX 语法
1.最基础的 JSX 语法 普通javaScript中 引入 标签 let html = '<h1>hello</h1>'; jsx语法 let JSX_html = < ...
- React的jsx语法,详细介绍和使用方法!
jsx语法 一种混合使用html及javascript语法的代码 在js中 遇到<xx>即开始html语法 遇到</xx>则结束html语法 恢复成js语法 例如: let D ...
- React的JSX语法及组件
最近一个同事很急没有做任何交接就请了陪产假,然后我来维护.说实在的我一开始是一脸懵逼的.因为MV*项目里用的最多的还是Vue:React听说也了解过,但毕竟不熟... 不过不管如何这也是工作:同事也恭 ...
随机推荐
- ajax同源策略,jsonP跨域访问
浏览器处于安全性的考虑,要求ajax请求,必须满足同源策略 规定:访问的协议://域名:端口号都相同时满足同源策略,浏览器可以正确解析数据,否则如果有一项不满足要求,则属于跨域访问,浏览器可以正常获取 ...
- PAT B1031 查验身份证(15)
AC代码 #include <cstdio> #include <iostream> using namespace std; const int max_n = 110; / ...
- win7安装mongodb3.6
1. 下载 https://www.mongodb.com/download-center/enterprise 选择合适平台点击下载 2. 安装mongodb 在win7系统安装mongodb需要v ...
- mybatis插入数据返回主键
原来之前一直用错了... keyProperty是表示将返回的主键设置为该方法参数的对应属性中去,而不是用返回值的形式的去获取.
- MySQL存储引擎InnoDB大量数据下的问题
MySQL如果只有MyISAM一个引擎的话,那你们黑真的也有道理,但问题是InnoDB现在已经是MySQL默认的引擎,而且这个引擎综合能力很强,能用好这个引擎其实就已经能解决大多数需要数据库的业务逻辑 ...
- 05docker仓库---搭建本地仓库
Docker仓库 仓库(Repository)是集中存放镜像的地方,分别公有仓库和私有仓库. 注册服务器是存放仓库的具体服务器.一个注册服务器上可以有多个仓库,每一个仓库里面可以有多个镜像. eg:仓 ...
- kali安装dnsdict6
https://src.fedoraproject.org/lookaside/pkgs/thc-ipv6/thc-ipv6-2.7.tar.gz/2975dd54be35b68c140eb2a6b8 ...
- java实现spark常用算子之Repartitions
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...
- Redis之淘汰策略
Redis 内存数据集大小上升到一定大小的时候,就会进行数据淘汰策略. Redis 提供了 6 种数据淘汰策略: 1. volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰. ...
- jeesite直接登录——真实破解
前台 后台 @RequiresPermissions("alarm:alarm:view")一定要注释 —————————————————————————————————————— ...