目录:

1、在React项目中启用JSX语法

2、在JSX中写js代码

3、使用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语法的更多相关文章

  1. 前端笔记之React(一)初识React&组件&JSX语法

    一.React项目起步配置 官网:https://reactjs.org/ 文档:https://reactjs.org/docs/hello-world.html 中文:http://react.c ...

  2. 【JAVASCRIPT】React学习-JSX 语法

    摘要 react 学习包括几个部分: 文本渲染 JSX 语法 组件化思想 数据流 JSX 语法 1. 定义 JSX 是javascript + xml 的合集,我们可以将javascript 与 ht ...

  3. react的jsx语法

    在webpack.config.js中配置解析的loader { test:/\.jsx?$/, use:{ loader:"babel-loader", options:{ pr ...

  4. react 的JSX语法需要注意哪些点?

    注释方式 ReactDOM.render( <div> {/*JSX 中的注释方式*/} </div>, document.getElementById('root') ) j ...

  5. React之JSX语法

    1. JSX的介绍   JSX(JavaScript XML)——一种在React组件内部构建标签的类XML语法.react在不使用JSX的情况下一样可以工作,然而使用JSX可以提高组件的可读性,因此 ...

  6. React之jsx语法特性

    jsx 语法,直接可以在js中使用html标签. 还可以通过花括号的形式,在html标签中,写js表达式. <div> { 1 + 2 } hello,world! </div> ...

  7. 3.react 基础 - JSX 语法

    1.最基础的 JSX 语法 普通javaScript中 引入 标签 let html = '<h1>hello</h1>'; jsx语法 let JSX_html = < ...

  8. React的jsx语法,详细介绍和使用方法!

    jsx语法 一种混合使用html及javascript语法的代码 在js中 遇到<xx>即开始html语法 遇到</xx>则结束html语法 恢复成js语法 例如: let D ...

  9. React的JSX语法及组件

    最近一个同事很急没有做任何交接就请了陪产假,然后我来维护.说实在的我一开始是一脸懵逼的.因为MV*项目里用的最多的还是Vue:React听说也了解过,但毕竟不熟... 不过不管如何这也是工作:同事也恭 ...

随机推荐

  1. Linux就该这么学——新手必须掌握的命令之文件目录管理命令组

    touch命令 用途 : 用于创建空白文件或设置文件的时间 格式 : touch [选项] [文件] 参数 作用 -a 仅修改”读取时间”(atime) -m 仅修改”修改时间”(mtime) -d ...

  2. CentOS 修改/etc/resolv.conf 重启network后又恢复到原来的状态?

    问题描述:CentOS 修改/etc/resolv.conf 执行service network restart后,/etc/resolv.conf又恢复到原来的状态 解决方法:/etc/resolv ...

  3. 阿里云自动获取token值(python)

    一,token说明 token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识.当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个 ...

  4. nodes.js详细安装

    nodes.js详细安装 Node.js 本章节我们将向大家介绍在window和Linux上安装Node.js的方法. 本安装教程以Node.js v4.4.3 LTS(长期支持版本)版本为例. No ...

  5. centos7 修改时区,同步时间,Mysql修改时区

    查看时区 timedatectl status [root@localhost nova-back]# timedatectl status Local time: Thu 2019-05-23 15 ...

  6. 1 c# 获取当前正在运行的类的程序集

    public static Assembly CurrentAssembly { get { return Assembly.GetExecutingAssembly(); } }

  7. Entity Framework:三种开发模式实现数据访问

    原文地址 http://blog.csdn.net/syaguang2006/article/details/19606715 前言 Entity Framework支持Database First. ...

  8. TensorFlow中CNN的两种padding方式“SAME”和“VALID”

    来源 dilation_rate为一个可选的参数,默认为1,这里我们可以先不管它. 整理一下,对于"VALID",输出的形状计算如下: new_height=new_width=⌈ ...

  9. ueditor 去掉自动跟随内容的<p><br /></p>

    //编辑器不能为空内容 if (domUtils.isEmptyNode(me.body)) { me.body.innerHTML = ''; ueditor.all.js  删除BR 如果还不行, ...

  10. 获取iframe子页面内容高度给iframe动态设置高度

    <!DOCTYPE html><html> <head> <meta charset="UTF-8" /> <meta nam ...