我试图确定这两个之间是否存在任何重大差异,除了能够通过以下方式导入export default:
import myItem from 'myItem';
Run Code Online (Sandbox Code Playgroud)
使用export const我可以做:
import { myItem } from 'myItem';
Run Code Online (Sandbox Code Playgroud)
我想知道除此之外是否存在任何差异和/或用例.
花了一些时间学习React后,我理解了创建组件的两个主要范例之间的区别
我的问题是我什么时候应该使用哪一个?为什么?一个在另一个上有什么好处/权衡?
ES6/7课程:
import React, { Component } from 'react';
export class MyComponent extends Component {
render() {
return (
<div></div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
功能:
const MyComponent = (props) => {
return (
<div></div>
);
}
Run Code Online (Sandbox Code Playgroud)
只要没有任何状态可以被该组件操纵,我就会想到功能......但是这样吗?
我猜我是否使用任何生命周期方法,最好使用基于类的组件.
我刚接触使用带有React的ES6类,之前我已经将我的方法绑定到当前对象(在第一个示例中显示),但ES6是否允许我使用箭头将类函数永久绑定到类实例?(当作为回调函数传递时很有用.)当我尝试使用它时,我遇到错误,就像使用CoffeeScript一样:
class SomeClass extends React.Component {
// Instead of this
constructor(){
this.handleInputChange = this.handleInputChange.bind(this)
}
// Can I somehow do this? Am i just getting the syntax wrong?
handleInputChange (val) => {
console.log('selectionMade: ', val);
}
Run Code Online (Sandbox Code Playgroud)
因此,如果我要传递SomeClass.handleInputChange给setTimeout它,那么它将被限定为类实例,而不是window对象.
我需要做类似的事情:
if (condition) {
import something from 'something';
}
// ...
if (something) {
something.doStuff();
}
Run Code Online (Sandbox Code Playgroud)
上面的代码没有编译; 它抛出SyntaxError: ... 'import' and 'export' may only appear at the top level.
我试着用System.import如图所示这里,但我不知道在哪里System的来了.是不是最终被接受的ES6提案?该文章中"programmatic API"的链接将我转储到已弃用的文档页面.
可以说我有以下地图:
let myMap = new Map().set('a', 1).set('b', 2);
Run Code Online (Sandbox Code Playgroud)
我希望根据以上内容获得['a','b'].我目前的解决方案似乎很长很可怕.
let myMap = new Map().set('a', 1).set('b', 2);
let keys = [];
for (let key of myMap)
keys.push(key);
console.log(keys);
Run Code Online (Sandbox Code Playgroud)
必须有更好的方法,不是吗?
新的稳定版本的Node.js(0.12)最近已经升级了Google的v8 JavaScript引擎v3.28.73.
--harmony标志?我检查了几个声称要列出ES 6功能的网站但是所有这些功能看起来都已过时 - 最突出的是,这个表(更新: 现在更新时的当前Node.js状态为0.12),因为有几个功能列为--harmony当我发现其中一些是默认启用时需要标志(地图,集合,符号,仅举几例).更新:节点特定表已经可用
此外,尝试谷歌这个信息纯粹为v8引擎提供了太新的信息 - 当前的v8版本是4.2.*,这远远超过了Node.js使用的.
我希望这个问题(及其答案)将成为Node.js开发人员现在可以使用的ES 6功能的全面总结.
调用静态方法的标准方法是什么?我可以考虑使用constructor或使用类本身的名称,我不喜欢后者,因为它没有必要.前者是推荐的方式,还是还有其他的东西?
这是一个(人为的)例子:
class SomeObject {
constructor(n){
this.n = n;
}
static print(n){
console.log(n);
}
printN(){
this.constructor.print(this.n);
}
}
Run Code Online (Sandbox Code Playgroud) 我试图在我的项目中运行一些ES6代码,但我收到意外的令牌导出错误.
export class MyClass {
constructor() {
console.log("es6");
}
}
Run Code Online (Sandbox Code Playgroud) 我从ESLint收到此错误:
error Parsing error: The keyword 'const' is reserved
Run Code Online (Sandbox Code Playgroud)
从这段代码:
const express = require('express');
const app = express();
const _ = require('underscore');
Run Code Online (Sandbox Code Playgroud)
我已经尝试删除node_modules并重新安装所有npm软件包(如此处所示),但无济于事.
我正在寻找一种在我的浏览器控制台中运行ECMAScript 6代码的方法,但是大多数浏览器都不支持我正在寻找的功能.例如,Firefox是唯一支持箭头功能的浏览器.
有没有办法(扩展名,用户脚本等)我可以在Chrome上运行这些功能?
google-chrome userscripts google-chrome-extension ecmascript-6
ecmascript-6 ×10
javascript ×9
node.js ×2
reactjs ×2
babel ×1
babeljs ×1
class ×1
dictionary ×1
es6-class ×1
es6-modules ×1
eslint ×1
module ×1
redux ×1
static ×1
userscripts ×1
v8 ×1
webpack ×1