【react native ES6】react native 中es6语法解析

前端之家收集整理的这篇文章主要介绍了【react native ES6】react native 中es6语法解析前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

解构赋值

  1. >var {
  2. StyleSheet,Text,View
  3. } = React;@H_502_5@
  4. 这句代码ES6 中新增的解构(Destructuring)赋值语句。准许你获取对象的多个属性并且使用一条语句将它们赋给多个变量。

  5. 上面的代码等价于:

  6. var StyleSheet = React.StyleSheet;
  7. var Text = React.Text;
  8. var View = React.View@H_502_5@ 
  9. 再看几个例子,以前,为变量赋值,只能直接指定值:

  10. var a = 1;
  11. var b = 2;
  12. var c = 3;@H_502_5@ 
  13. ES6 允许这样写:

  14. var [a,b,c] = [1,2,153)">3];@H_502_5@ 
  15. 更详细的内容可参看:变量的解构赋值

  16. 箭头函数

  17. React Native 里面经常会出现类似的代码:

  18. ES6中新增的箭头操作符=>简化了函数的书写。操作符左边为输入的参数,而右边则是进行的操作以及返回的值Inputs=>outputs

  19. 举几个栗子感受下:

  20. var array = [3];
  21. //传统写法
  22. array.forEach(function(v,i,a) {
  23.     console.log(v);
  24. });
  25. //ES6
  26. array.forEach(v = > console.log(v));@H_502_5@ 
  27. var sum = (num1,num2) => { return num1 + num2; }
  28. //等同于:
  29. var sum = function(num1,num2) {
  30.     return num1 + num2;
  31.  };@H_502_5@ 
  32. 更多详细内容请自行Google,或查看:https://www.imququ.com/post/arrow-function-in-es6.html

  33. 延展操作符(Spread operator)

  34. 这个 … 操作符(也被叫做延展操作符 - spread operator)已经被 ES6 数组 支持。它允许传递数组或者类数组直接做为函数的参数而不用通过apply。

  35. var people=['Wayou','John',68)">'Sherlock'];
  36. //sayHello函数本来接收三个单独的参数人妖,人二和人三
  37. function sayHello(people1,people2,people3){
  38.   console.log(`Hello ${people1},${people2},${people3}`);
  39. }
  40. //但是我们将一个数组以拓展参数的形式传递,它能很好地映射到每个单独的参数
  41. sayHello(...people);//输出:Hello Wayou,John,Sherlock 
  42. //而在以前,如果需要传递数组当参数,我们需要使用函数的apply方法
  43. sayHello.apply(null,people);502_5@ 
  44. 而在React中,延展操作符一般用于属性的批量赋值上。在JSX中,可以使用…运算符,表示将一个对象的键值对与ReactElementprops属性合并。

  45. var props = {};
  46.   props.foo = x;
  47.   props.bar = y;
  48.   var component = <Component {...props} />;
  49.   
  50. //等价于
  51. var props = {};
  52.   props.foo = x;
  53.   props.bar = y;
  54.   var component = <Component foo={x} bar={y} />;@H_502_5@ 
  55. 它也可以和普通的XML属性混合使用,需要同名属性,后者将覆盖前者:

  56. var props = { foo: 'default' };
  57. var component = ...props} {'override'} />;
  58. console.log(component.props.foo); // 'override'@H_502_5@ 
  59. 更多详细信息:https://facebook.github.io/react/docs/jsx-spread.html

  60. class

  61. ES6添加了对类的支持,引入了class关键字(其实classJavaScript中一直是保留字,目的就是考虑到可能在以后的新版本中会用到,现在终于派上用场了)。JS本身就是面向对象的,ES6中提供的类实际上只是JS原型模式的包装。现在提供原生的class支持后,对象的创建,继承更加直观了,并且父类方法调用,实例化,静态方法和构造函数等概念都更加形象化。

  62. class PropertyView extends Component {
  63.   render() {
  64.     return (
  65.       <View></View>
  66.     )
  67.   }
  68. }
  69. //等价于
  70. var PropertyView = React.createClass({
  71.   render() {
  72.     return (
  73.       <View></View>
  74.     )
  75.   }
  76. })
  77. @H_502_5@ 
  78. 方法定义(method definition)

  79. ECMAScript 6中,引入了一种名叫方法定义(method definition)的新语法糖,相对于以前的完整写法,这种简写形式可以让你少写一个function键字.

  80. React.createClass({
  81.   render() {
  82.     return (
  83.       <View></View>
  84.   )
  85.  }
  86. })
  87. //等价于
  88. React.createClass({
  89.  render : function() {
  90.   return (
  91.    </View>
  92.   )
  93.  }
  94. })@H_502_5@ 
  95.  
  96.  
  97. 原文链接:http://www.tuicool.com/articles/uyE3Er

猜你在找的React相关文章