React native 这需要什么语法?

React native 这需要什么语法?,react-native,ecmascript-6,react-jsx,React Native,Ecmascript 6,React Jsx,我对import和require的一些语法有点困惑。有时我会看到这样的语法: var React = require('react-native'); var { AppRegistry, StyleSheet, Text, View, } = React; 这意味着什么?在这种情况下,react native被放入react变量中,然后var{…}=react意味着我们只选择那些要在项目中使用的组件 有时我还会看到以下语法: import { Animated, Vi

我对
import
require
的一些语法有点困惑。有时我会看到这样的语法:

var React = require('react-native');
var {
  AppRegistry,
  StyleSheet,
  Text,
  View,
} = React;
这意味着什么?在这种情况下,
react native
被放入
react
变量中,然后
var{…}=react
意味着我们只选择那些要在项目中使用的组件

有时我还会看到以下语法:

import {
  Animated,
  View,
  Text,
} from 'react-native';
这两者之间的区别是什么?它们相似吗?根据偏好我应该使用什么?

也就是说。根据链接:

destructuring assignment语法是一个JavaScript表达式,它可以将数组中的值或对象中的属性解压缩到不同的变量中

例如:

var { a, b } = {
  a: 3,
  b: "foo"
}
将为您提供:

a = 3
b = "foo"
现在,关于
要求
require
函数返回一个模块对象,它只是一个将所有导出作为属性的对象。使用destructuring assignment将解压这些导出(因为它们是模块对象的属性),并仅为您提供模块的特定名称导出

现在进入语法。虽然这看起来像是一个解构任务,但事实并非如此。它是从模块导入命名导出的
import
语法之一。从本质上讲,它做的事情与上面相同,但它不是解构赋值。这两个选项都允许您执行以下操作。考虑一个名为“代码>平方</代码>的模块:

//square.js
export function square(n) {
    return n * n;
}
我可以做到:

var module = require("path/to/square.js"); //require returns an object that has all the exports attached as properties
module.square(3); //9
或:

最后两个版本的区别在于,一个是ECMAScript 2015,另一个是ECMAScript 5。这其实并不重要,因为它们都从模块导入特定的名称

var { square } = require("path/to/square.js"); 
square(3); //9

import { square } from "path/to/square.js";
square(3); //9