GVKun编程网logo

JavaScript的React框架中的JSX语法学习入门教程(js react框架)

23

如果您对JavaScript的React框架中的JSX语法学习入门教程感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于JavaScript的React框架中的JSX语法学习入

如果您对JavaScript的React框架中的JSX语法学习入门教程感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于JavaScript的React框架中的JSX语法学习入门教程的详细内容,我们还将为您解答js react框架的相关问题,并且为您提供关于16个最流行的JavaScript框架[推荐]_javascript技巧、javascript – Facebook的React JS框架中的上下文、javascript – 使用Typescript中的react-meteor-data、javascript – 如何从.jsx脚本调用ReactJS元素上的jQuery函数?的有价值信息。

本文目录一览:

JavaScript的React框架中的JSX语法学习入门教程(js react框架)

JavaScript的React框架中的JSX语法学习入门教程(js react框架)

什么是JSX?

在用React写组件的时候,通常会用到JSX语法,粗看上去,像是在Javascript代码里直接写起了XML标签,实质上这只是一个语法糖,每一个XML标签都会被JSX转换工具转换成纯Javascript代码,当然你想直接使用纯Javascript代码写也是可以的,只是利用JSX,组件的结构和组件之间的关系看上去更加清晰。

rush:js;"> var MyComponent = React.createClass({/*...*/}); var myElement = ; React.render(myElement,document.body);

一个XML标签,比如会被JSX转换工具转换成什么呢?

比如:

rush:js;"> var Nav = React.createClass({/*...*/}); var app = ;

会被转化为:

rush:js;"> var Nav = React.createClass({/*...*/}); var app = React.createElement( Nav,{color:"blue"},React.createElement(Profile,null,"click") );

那么也就是说,我们写一个XML标签,实质上就是在调用React.createElement这个方法,并返回一个ReactElement对象。

rush:js;"> ReactElement createElement( string/ReactClass type,[object props],[children ...] )

这个方法的第一个参数可以是一个字符串,表示是一个HTML标准内的元素,或者是一个ReactClass类型的对象,表示我们之前封装好的自定义组件。第二个参数是一个对象,或者说是字典也可以,它保存了这个元素的所有固有属性(即传入后基本不会改变的值)。从第三个参数开始,之后的参数都被认作是元素的子元素。

JSX转化器

要把带有JSX语法的代码转化为纯Javascript代码,有多种方式,对于内联与HTML中的代码或者是未经过转化的外部文件,在script标签中要加上type="text/jsx",并引入JSXTransformer.js文件即可,不过这种方式并不建议在生产环境使用,建议的方法是在代码上线前就将代码转换好,可以使用npm全局安装react-tools:

rush:bash;"> npm install -g react-tools

并使用命令行工具转化即可(具体用法可以参考jsx -h):

rush:bash;"> jsx src/ build/

如果使用自动化工具,比如gulp的话,可以使用相应插件gulp-react。

HTML模板中使用JS

在HTML模板中使用JS非常方便,只需要用大括号把JS代码括起来即可。

rush:js;"> var names = ['Alice','Emily','Kate'];

React.render(

{ names.map(function (name) { return
Hello,{name}!
}) }
,document.getElementById('example') );

编译出来就变成了这样:

rush:js;"> var names = ['Alice','Kate']; React.render( React.createElement("div",names.map(function (name) { return React.createElement("div","Hello,",name,"!") }) ),document.getElementById('example') );

要注意的是,大括号实际就是一个变量输出表达式,JSX最终就是直接把花括号中的内容作为 React.createElement 的第三个参数直接传入了(没有任何修改直接传入),所以其中只能放一行表达式,并且任何不能直接作为第三个参数的写法都是错的,那么你这样写就是错的:

rush:js;"> React.render(
{ var a = 1; names.map(function (name) { return
Hello,document.getElementById('example') );

因为很明显其中花括号内的内容直接放在第三个参数上,语法不对。

这么写也是错的:

rush:js;"> React.render(
{ var a = 1;

}

,document.getElementById('example') );

因为 React.createElement(“div”,var a = 1;) 是语法错误。 那么你也可以理解为什么大括号中的js表达式不能有分号结尾了吧。

需要注意的是,如果你在属性中输出JS变量,是不能加引号的,不然会被当做字符串而不被解析。 应该是这样:

rush:js;"> 链接

使用HTML标签

要创建一个HTML标准中存在的元素,直接像写HTML代码一样即可:

rush:js;"> var mydivelement =
; React.render(mydivelement,document.body);

不过需要注意的是class和for这两个属性,JSX语法最终是要被转换为纯Javascript的,所以要和在Javascript DOM中一样,用className和htmlFor。

还有一点是,在创建HTML标准内的元素时,JSX转化器会丢弃那些非标准的属性,如果一定要添加自定义属性,那么需要在这些自定义属性之前添加data-前缀。

rush:js;">

命名空间式组件

比如开发组件的时候,一个组件有多个子组件,你希望这些子组件可以作为其父组件的属性,那么可以像这样用:

rush:js;"> var Form = MyFormComponent;

var App = (

);

这样你只需将子组件的ReactClass作为其父组件的属性:

rush:js;"> var MyFormComponent = React.createClass({ ... });

MyFormComponent.Row = React.createClass({ ... });
MyFormComponent.Label = React.createClass({ ... });
MyFormComponent.Input = React.createClass({ ... });

而创建子元素可以直接交给JSX转化器:

rush:js;"> var App = ( React.createElement(Form,React.createElement(Form.Row,React.createElement(Form.Label,null),React.createElement(Form.Input,null) ) ) );

该功能需要0.11及以上版本

Javascript表达式

在JSX语法中写Javascript表达式只需要用{}即可,比如下面这个使用三目运算符的例子:

rush:js;"> // Input (JSX): var content = {window.isLoggedIn ?

不过要注意的是,JSX语法只是语法糖,它的背后是调用ReactElement的构造方法React.createElement的,所以类似这样的写法是不可以的:

rush:js;"> // This JSX:
Hello World!

// Is transformed to this JS:
React.createElement("div",{id: if (condition) { 'msg' }},"Hello World!");

可以从转化后的Javascript代码中看出明显的语法错误,所以要不用三目运算符,要不就这样写:

rush:js;"> if (condition)
Hello World!
else
Hello World!

传播属性(Spread Attributes)

在JSX中,可以使用...运算符,表示将一个对象的键值对与ReactElement的props属性合并,这个...运算符的实现类似于ES6 Array中的...运算符的特性。

rush:js;"> var props = { foo: x,bar: y }; var component = ;

这样就相当于:

rush:js;"> var component =

它也可以和普通的XML属性混合使用,需要同名属性,后者将覆盖前者:

rush:js;"> var props = { foo: 'default' }; var component = ; console.log(component.props.foo); // 'override'

总结

以上是小编为你收集整理的JavaScript的React框架中的JSX语法学习入门教程全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

JavaScriptjs

16个最流行的JavaScript框架[推荐]_javascript技巧

16个最流行的JavaScript框架[推荐]_javascript技巧

1. jQuery – Javascript Framework

jQuery 是最流行的 JavaScript 框架,它简化了HTML 文档遍历、事件处理、动画和Ajax交互。

2. Dojo Javascript Framework

Dojo强大的核心使Web开发更加敏捷,它拥有出色的UI工具库,号称 Unbeatable JavaScript Tools。

3. Sencha Ext JS4 Javascript Framework

官方介绍说是最先进的JavaScript框架,用于构建下一代跨平台的Web应用程序。

4. Prototype javascript Framwork

Prototype 是一个致力于简化动态Web应用程序的开发,有独特的、易用的工具库和最好的Ajax库。

5. Uize Javascript Framework

UIZE 是一个强大、开源、面向对象的JavaScript框架,拥有众多效果炫目的Web部件。

6. Qooxdoo Javascript Framework

qooxdoo 是一个用于创建富Web应用程序的功能全面的、创新的JavaScript框架。

7. Zepo Javascript Framework

Zepto 是一个轻巧的JavaScript框架,用于Webkit核心浏览器开发,兼容jQuery语法。

8. DHTMLX Touch Javascript Framework

DHTMLX Touch 是一个基于HTML5,用于构建支持移动触屏设备的应用程序的JavaScript框架。

9. YUI library Javascript Framework

YUI Library 是Yahoo公司推出的开源的JavaScript框架,用于快速开发交互性高,更加稳健的Web应用。

10. Archetype Javascript Framework

Archetype takes care of loading everything needed by your application, using a transitive dependency loading system, and starts it when everything needed is available. No more error due to code unavailable at the good time, Archetype loads files dependency by dependency, in an efficient way. A file can have several kind of dependencies ( css, templates, javascript ), and you can at any moment alias any dependency to another URL without any needs for a code refactoring, just with one line of configuration : this is perfect for production purpose (static domains, etc.).

11. Rico Javascript Framework

Rico 是一款优秀的用于富Web应用程序开发的JavaScript框架。

12. Script.aculo Javascript Framework

script.aculo.us 是一个优秀的跨浏览器JavaScript用户界面库,提供包括动画,拖放,Ajax,单元测试等API。

13. Javascript MVC Framework
JavaScriptMVC 是一个开源的JavaScript框架,包含最好的jQuery开发理念。
14. Spry Javascript Framework
Spry 是一个用于快速构建支持的Web应用程序的JavaScript框架。
15. MooTools Javascript Framework
MooTools 是一个模块化的、面向对象的JavaScript框架,适合中高级JavaScript开发人员。
16. Sproutcore Javascript Framework
SproutCore 是一个HTML5应用程序框架,用于构建运行于现代浏览器的Web应用程序。

javascript – Facebook的React JS框架中的上下文

javascript – Facebook的React JS框架中的上下文

我很难理解Facebook的React JS框架中的上下文如何工作.

将规范传递给React.createClass时,某些方法(特别是事件处理程序)似乎需要使用React.autoBind来“绑定到组件的回调”.其他方法(特别是render())没有这个要求,但仍然乐于引用’this.props’或’this.state’.

如果render()方法不是组件,那么’this’的上下文是什么?

解决方法

那是因为他们已经为内部方法(例如render)做了autoBind.实际上,如果你调用autoBind并传递这些方法,你就会收到错误.

对于自定义方法,最初的想法是您可能希望坚持要分配的任何上下文,但这在0.4.x(http://facebook.github.io/react/blog/2013/07/02/react-v0-4-autobind-by-default.html)中已更改.

基本上因为绑定这大部分时间都是你想要的,从现在开始,createClass中的每个方法现在默认都是autoBind.

javascript – 使用Typescript中的react-meteor-data

javascript – 使用Typescript中的react-meteor-data

题:

如何将反应流星数据与Typescript一起使用?

背景:

我刚刚开始一个新项目,并希望使用Meteor.

根据我一直在阅读的内容(link),建议似乎是将React与Meteor一起用于新项目.太棒了我还是想学习React.

既然我是Java程序员,我真的很想使用Typescript.

但是我对这三种技术遇到了很多麻烦.

具体来说,我如何将反应组件连接到流星容器?

我相信我应该使用反应流星数据,但如果我跑了
打字搜索meteor add react-meteor-data我一无所获.

我从哪里开始?

特信用:

我真正想要的是将Todo App with React教程重写为与Typescript一起使用的人.这会让我的生活变得更轻松.任何接受者?

解决方法

基于我一直在阅读的内容,这对于Javascript社区以及Meteor社区而言是一个尴尬的时刻.随着Webpack,Typescript,Flow,Angular2,React以及许多其他新工具和技术的引入,现在开始一个Meteor项目是痛苦的(只要您想使用其中一些现代技术).也许很快就会很容易.

这里有一些非常有用的文章:

> State of Meteor (part 1)
> State of Meteor (part 2)

由于所有这一切,我决定现在使用Express.

javascript – 如何从.jsx脚本调用ReactJS元素上的jQuery函数?

javascript – 如何从.jsx脚本调用ReactJS元素上的jQuery函数?

我刚刚开始学习ReactJS,这件事发生在我身上.

例如:

我想对reactjs元素执行的函数:

function initializeInput(selector, color) {
    // just an example function
    $(selector).css("font-size", "21pt");
}

和我的.jsx文件的一部分:

var myInput = React.createClass({
componentDidMount: function () {
    initializeInput("#" + this.props.inputId);
},
render: function() {
    return (
        <input type="text" value="text goes here" 
               name={this.props.inputName} 
               id={this.props.inputId}/>
    );
}
});

这个函数被成功调用,但没有任何反应,似乎事情不仅仅是用jQuery和React这样做.将它们混合起来甚至是好的吗?谢谢.

解决方法:

Jquery与Reactjs非常合作.
您可以在反应渲染之后调用jquery函数,即在componentDidMount和中

你可以为此做出反应.让我们说你想要一个工具提示

var myInput = React.createClass({
componentDidMount: function () {
    $(this.refs.tooltip).tooltip();
},
render: function() {
    return (
        <input ref="tooltip" type="text" value="text goes here" 
               name={this.props.inputName} 
               id={this.props.inputId}/>
    );
}
});

关于JavaScript的React框架中的JSX语法学习入门教程js react框架的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于16个最流行的JavaScript框架[推荐]_javascript技巧、javascript – Facebook的React JS框架中的上下文、javascript – 使用Typescript中的react-meteor-data、javascript – 如何从.jsx脚本调用ReactJS元素上的jQuery函数?的相关知识,请在本站寻找。

本文标签: