目录:

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. vue 事件中的 .native

    vue组件添加事件@click.native native是什么? .native - 监听组件根元素的原生事件. 主要是给自定义的组件添加原生事件. 官网的解释: 你可能想在某个组件的根元素上监听一 ...

  2. 详解vue 路由跳转四种方式 (带参数)

    详解vue 路由跳转四种方式 (带参数):https://www.jb51.net/article/160401.htm 1.  router-link ? 1 2 3 4 5 6 7 8 9 10 ...

  3. php+lottery.js制作九宫格抽奖实例

    php+lottery.js制作九宫格抽奖实例,本抽奖功能效果表现好,定制方便简单,新手学习跟直接拿来用都非常不错,兼容IE.火狐.谷歌等浏览器. 引入抽奖插件lottery.js <scrip ...

  4. go get 安装一个特定版本的包失败解决方法

    场景描述 go get 下载第三方包golang gin框架时,会去下载gopkg.in/go-playground/validator.v8包以及gopkg.in/yaml.v2包,gopkg.in ...

  5. css 字体库和动画

    @font-face { font-family:'WebSymbols'; src: url('../font/WebSymbols-Regular.otf'); } .icon{ font-fam ...

  6. warning LNK4076: 无效的增量状态文件“../×××.ilk”;正在非增量链接

      VS编译警告:warning LNK4076: 无效的增量状态文件“../×××.ilk”;正在非增量链接 解决方法:删除程序提示的输出目录的×××.ilk,重新编译,即可

  7. Centos7:solr伪集群(SolrCloud)搭建

    JDK,tocmat环境搭建 zookeeper集群安装 解压缩zookeeper的压缩包 创建data目录 复制zoo_sample.cfg为zoo.cfg 修改confg/zoo.cfg中 dat ...

  8. Java学习笔记【十三、多线程编程】

    概念 Java 给多线程编程提供了内置的支持.一个多线程程序包含两个或多个能并发运行的部分.程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径. 多线程是多任务的一种特别的形式,但多线 ...

  9. 第十一章、特性property

    目录 第十一章.特性property 一.property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 二.为什么要用property 三.封装与拓展性 第十一章.特性property ...

  10. TCP超时与重传

    TCP提供可靠的传输层.它使用的方法之一就是确认从另一端收到的数据.但数据和确认都有可能丢失.TCP通过在发送时设置一个定时器来解决这种问题.如果当定时器溢出时还没收到确认,他就重传数该数据.对任何实 ...