JSX 使用说明

JSX 是什么? 有哪些需要注意

JSX实际上是语法糖, 用xml标签Javascript代码, 看上去结构更加清晰
一般来说,在项目上线前要把jsx代码转换成纯js代码,gulp-reactreact-tools

JSX 需要注意关键词
由于classfor这两个html标签里的属性与Javascript关键词冲突, 所以需要用classNamehtmlFor代替

JSX 会丢弃非标准属性,所以自定义属性需要添加 data- 前缀

<div data-custom-attribute="foo" />

JSX 命名空间

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

var Form = MyFormComponent;

var App = (
  <Form>
    <Form.Row>
      <Form.Label />
      <Form.Input />
    </Form.Row>
  </Form>
);

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

var MyFormComponent = React.createClass({ ... });

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

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

var App = (
    React.createElement(Form, null,
        React.createElement(Form.Row, null,
            React.createElement(Form.Label, null),
            React.createElement(Form.Input, null)
        )
    )
);

JSX 不能使用if条件语句,会出现语法错误,可以使用三目运算符

// This JSX:
<div id={if (condition) { 'msg' }}>Hello World!</div>

// Error: Is transformed to this JS:
React.createElement("div", {id: if (condition) { 'msg' }}, "Hello World!");
// 可以从转化后的Javascript代码中看出明显的语法错误,所以要不用三目运算符,要不就这样写:
if (condition) <div id='msg'>Hello World!</div>
else <div>Hello World!</div>

JSX 使用...运算符

var props = { foo: x, bar: y };
var component = <Component { ...props } />;
// 这样就相当于:
var component = <Component foo={x} bar={y} />

// 它也可以和普通的XML属性混合使用,需要同名属性,后者将覆盖前者:
var props = { foo: 'default' };
var component = <Component {...props} foo={'override'} />;
console.log(component.props.foo); // 'override'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 005@关于JSX语法 转(有所更改):React入门:关于JSX语法可以参考的资料:React.js学习笔记之J...
    蓦然之间的阅读 994评论 0 0
  • 以下内容是我在学习和研究React时,对React的特性、重点和注意事项的提取、精练和总结,可以做为React特性...
    科研者阅读 8,319评论 2 21
  • 本笔记基于React官方文档,当前React版本号为15.4.0。 1. 安装 1.1 尝试 开始之前可以先去co...
    Awey阅读 7,828评论 14 128
  • 英雄剑 难得美人羡 白玉碎 香水夜无眠 红尘落 不解相思苦 听蝴蝶倾诉 桑叶不知路 时光,恍惚 千年,虚无 残花,...
    黎潇阅读 303评论 0 1
  • 自我介绍一下,男,三十岁,外贸创业5年,负债过百万,家里资产都已经抵押在银行。 嗯你没看错,是负债,你应该不禁在心...
    禾熠尘阅读 2,932评论 13 17