2015-04-22 31 views
4

在反应本土例如: https://github.com/facebook/react-native如何理解这种语法? var {...} = React;

var React = require('react-native'); 
var { ScrollView, TouchableHighlight, Text } = React; 

var TouchDemo = React.createClass({ 
    render: function() { 
    return (
     <ScrollView> 
     <TouchableHighlight onPress={() => console.log('pressed')}> 
      <Text>Proper Touch Handling</Text> 
     </TouchableHighlight> 
     </ScrollView> 
    ); 
    }, 
}); 

这是什么语法是什么意思?

var { ScrollView, TouchableHighlight, Text } = React; 

我在nodejs console中键入它导致语法错误。这种特殊的Javascript语法仅适用于React Native吗?

感谢

+0

我想这是一个ES6功能,但它可能是JSX特有的ng以及https://developer.mozilla。org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment –

+0

查看解构赋值[here](https://www.airpair.com/javascript/posts/using-es6-harmony-with-nodejs#2 -2解构分配)和[这里](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment)。这是语法糖来保存输入。 – jfriend00

回答

4

也就是说Destructuring,一个ECMAScript 6 feature。据我所知,它尚未包含在任何版本的node.js或iojs中,但可能有一个命令行标志可用于启用它。

+0

谢谢。它非常方便。自Python以来就像这个功能一样 – kkpoon

1

This document描述了React Native支持的JavaScript环境。

ES5

  • 保留字:promise.catch(function() { });

ES6

  • Arrow功能:<C onPress={() => this.setState({pressed: true})}

  • 蔓延电话:Math.max(...array);

  • 类:class C extends React.Component { render() { return <View />; } }

  • 解构:var {isActive, style} = this.props;

  • 迭代:for (var element of array) { }

  • 计算属性:var key = 'abc'; var obj = {[key]: 10};

  • 对象Consise方法:var obj = { method() { return 10; } };

  • 对象简短表示法:var name = 'vjeux'; var obj = { name };

  • 休息PARAMS:function(type, ...args) { }

  • 模板:VAR谁= '世界';无功海峡=`尊敬的$ {谁};`

ES7

  • 对象传播:var extended = { ...obj, a: 10 };

  • 功能后面的逗号:function f(a, b, c,) { }