求问 react-native 中关于 ES6 语法的一个问题.

2017-07-04 06:44:43 +08:00
 NonClockworkChen
import React, { Component } from 'react';

不理解,import React

看了一下源码,也没找到到底 import 哪里 没在 react 中看见 export default

根据 react-native 中文社区网帖子的描述
http://bbs.reactnative.cn/topic/15/react-react-native-的 es5-es6 写法对照表
,感觉上是源码最后两行 var React_1 = React;

module.exports = React_1;

才可以 import React,但是,最后又说不能混用..

导出单个类

在 ES5 里,要导出一个类给别的模块用,一般通过 module.exports 来导出

//ES5
var MyComponent = React.createClass({
    ...
});
module.exports = MyComponent;
在 ES6 里,通常用 export default 来实现相同的功能:

//ES6
export default class MyComponent extends Component{
    ...
}
引用的时候也类似:

//ES5
var MyComponent = require('./MyComponent');

//ES6
import MyComponent from './MyComponent';
注意导入和导出的写法必须配套,不能混用!

除了阮一峰老师的 es6 还需要看什么书吗

1323 次点击
所在节点    问与答
4 条回复
Lxxyx
2017-07-04 06:59:46 +08:00
看 ES6 的模块系统的知识。
anjianshi
2017-07-04 08:07:56 +08:00
就是 module.exports = React_1; 起了作用。
不能混用不是绝对的,现在实现 ES6 import 的工具都考虑到了对 common js 的兼容性。
module.exports = xxx 会被这些工具看作是和 export default xxx 等价的
anjianshi
2017-07-04 08:12:57 +08:00
例子:这里有一个 NodeJS 提出的关于“如何用 es import 语法引入 common js 模块“的提案,可以参考一下
https://github.com/nodejs/node-eps/blob/master/002-es6-modules.md#54-es-consuming-commonjs
NonClockworkChen
2017-07-04 08:36:59 +08:00
@anjianshi 我一开始也是这么想的,不过,后来百度了一下,import React from 'react',那个 Segmentful 上有种说法是把 ES6 用 babel 转成了 ES5,感觉这个更加合理.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/372818

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX