【JAVASCRIPT】React学习-JSX 语法
摘要
react 学习包括几个部分:
- 文本渲染
- JSX 语法
- 组件化思想
- 数据流
JSX 语法
1. 定义
JSX 是javascript + xml 的合集,我们可以将javascript 与 html 一起编写, 封装页面组件的html 格式与业务逻辑。但使用 JSX 时,一定要编写成能精确定义和反应组件及属性的树状结构,避免无法解析,虽然目前还没遇到过无法解析的情形。
2. 如何区分javascript 与 xml
JSX 代码中 以 {} 包含的为 javascript 代码, <> 包含的为 html 代码,解析时采用对应的语法解析器
3. React 模块
约定分别使用首字母大、小写来区分本地模块的类和 HTML 标签。
- html 标签,JSX 中以小写字母开头
- 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 语法的更多相关文章
- 前端笔记之React(一)初识React&组件&JSX语法
一.React项目起步配置 官网:https://reactjs.org/ 文档:https://reactjs.org/docs/hello-world.html 中文:http://react.c ...
- React的JSX语法及组件
最近一个同事很急没有做任何交接就请了陪产假,然后我来维护.说实在的我一开始是一脸懵逼的.因为MV*项目里用的最多的还是Vue:React听说也了解过,但毕竟不熟... 不过不管如何这也是工作:同事也恭 ...
- 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语法
在webpack.config.js中配置解析的loader { test:/\.jsx?$/, use:{ loader:"babel-loader", options:{ pr ...
- React的jsx语法,详细介绍和使用方法!
jsx语法 一种混合使用html及javascript语法的代码 在js中 遇到<xx>即开始html语法 遇到</xx>则结束html语法 恢复成js语法 例如: let D ...
- React使用JSX语法
目录: 1.在React项目中启用JSX语法 2.在JSX中写js代码 3.使用JSX注意事项 1.在React项目中启用JSX语法 <--返回目录 JSX语法:符合xml规范的js语法 JS ...
随机推荐
- javascript中document.form[formName][]的意思
近来重新学习javascript发现还有很多知识点模糊,今天就javascript中的document.forms[formName][inputName]进行说明: <!DOCTYPE htm ...
- JS读写浏览器cookie及读取页面参数
JS读写浏览器cookie及读取页面参数 var zbrowser = { //设置浏览器cookie,exdays是cookie有效时间 setCookie: function (c_name, v ...
- 纯CSS3美化单选按钮radio
这种纯CSS3美化单选按钮radio的方法适用于以下情况: 1.可兼容IE9以上,需要兼容IE8的要写IE的hack把样式去掉 2.只支持单选按钮radio,因为单选按钮选中样式的圆圈可以用CSS做出 ...
- swiper结合ajax的轮播图
Swiper 是什么:是纯JavaScript打造的滑动特效插件,能够实现触屏焦点图.触屏tab切换.触屏多图切换等常用效果. 开源.免费.稳定.应用广泛. 这就是swiper简单的介绍,由于是结合a ...
- Java学习笔记--反射API
反射API 1.反射API的介绍 通过反射API可以获取Java程序在运行时刻的内部结构.比如Java类中包含的构造方法.域和方法等元素,并可以与这些元素进行交换. 按照 一般地面向对象的设计 ...
- vue项目构建与实战
关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 由于vue相对来说比较平缓的学习过程和新颖的技术思路,使其受到了广大前后端开发者的青睐,同时其通俗易 ...
- 让gdb能打印C++中的容器类型
由于原生的gdb对vector,map等容器的支持不太好,所以找到了一个工具,将这个工具集成到gdb中,就可以实现map,vector等容器的内容的打印操作. 1.用vim将下方的代码拷贝到一个新的文 ...
- SequoiaDB版本在线升级介绍说明
1.前言 在SequoiaDB数据库发展过程中,基本保持每半年对外发行一个正式的Release版本.并且每个新发布的Release版本相对老版本而言,性能方面都有很大的提高,并且数据库也会在新版本中加 ...
- 官方Tomcat镜像Dockerfile分析及镜像使用
官方Tomcat镜像 地址:https://hub.docker.com/_/tomcat/ 镜像的Full Description中,我们可以得到许多信息,这里简单介绍下: Supported ta ...
- 利用powershell反弹shell到metasploit
一.使用msfvenom生成PS1文件: msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST= -f psh-reflection >.p ...