在使用import引用模块时,如何正确使用{}

例如:有两个文件,home.js、user.js

一:不使用{}:

当需要在home.js中引入user.js的时候

//home.js 文件中
import user from './user';
对于上面的这种引入方法,只有user.js文件中提供默认的export defulat导出(必须是默认导出),这样在home.js文件中就可以使用user了。如下

//user.js 文件中
export default 'nihao'
在这种不使用{}来引用模块的情况下,import模块时的命名是随意的,即如下三种引用命名都是正确的:

// home.js文件中
import user from './user'
import user2 from './user'
import anyUser from './user'
因为它总是会解析到user.js中默认的export default。

二:使用花括号命名的方法{user}来导入user.js:

import { user } from './user'
上面代码生效的前提是,只有在模块user.js中有如下命名导出为user的export 的代码,也就是:

//user.js 文件中
export const user = 42
而且,在明确声明了命名导出后,那么在另一个js中使用{}引用模块时,import时的模块命名是有意义的,如下:

// home.js 文件中
import { user } from './user' // 正确,因为user.js中有命名为user的export (注意是非默认导出)
import { user2 } from './user' // 错误!因为user.js中没有命名为user2的export
import { anyUser } from './user' // 错误!因为user.js中没有命名为anyUser的export
要想上述代码正确执行,你需要明确声明每一个命名导出:

一个模块中只能有一个默认导出export default,但是却可以有任意命名导出(0个、1个、多个),你也可以如下,一次性将他们导入:

// user.js
import user, { user2, anyUser } from './user'
这里我们使用默认导出的user,以及命名导出user2和anyUser。

原文:https://blog.csdn.net/Chris__wang/article/details/82977626

react/React Native 在 import 导入时,有的带花括号{},有的不带原理解析的更多相关文章

  1. ES6,import时如何正确使用花括号'{ }'

    在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种.前者用于服务器,后者用于浏览器.ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取 ...

  2. React/React Native 的ES5 ES6写法对照表

    //es6与es5的区别很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component ...

  3. React/React Native 的ES5 ES6写法对照表-b

    很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教 ...

  4. React/React Native的 ES5 ES6 写法对照

      ES5 ES6 模块 var React = require("react-native); var { Image, Text, View } = React;   import Re ...

  5. React Native是一套使用 React 构建 Native app 的编程框架

    React Native是一套使用 React 构建 Native app 的编程框架 React Native at first sight what is React Native? 跟据官方的描 ...

  6. react native-调用react-native-fs插件时,如果数据的接口是需要验证信息的,在android上运行报错

    调用react-native-fs插件时,如果数据的接口是需要验证信息的,在android上运行报错,而在iOS上运行没问题.原因是因为接口是有验证信息的,而调用这个插件时没有传入,在iOS上会自动加 ...

  7. [React] react+redux+router+webpack+antd环境搭建一版

    好久之前搭建的一个react执行环境,受历史影响是webpack3.10.0和webpack-dev-server2.7.1的环境,新项目准备用webpack4重新弄弄了,旧的记录就合并发布了(在没有 ...

  8. [React] React Fundamentals: Integrating Components with D3 and AngularJS

    Since React is only interested in the V (view) of MVC, it plays well with other toolkits and framewo ...

  9. Maven导入时,Cannot change version of project facet Dynamic Web Module to 3.0.

    今天手贱,在eclipse里面把项目删掉了,重新maven导入时,报出Cannot change version of project facet Dynamic Web Module to 3.0. ...

随机推荐

  1. 查看tomcat项目中,具体占用cpu高的线程。

    1.查看主进程占用cpu高: 此处主进程:27823 ~]# top top - :0: up days, :, 3 users, load average: 13.12, 13.31, 13.23 ...

  2. Centos7.2中安装pip

    CentOS安装python-pip 在使用Python时,需要导入一些第三方工具包,一般情况下,鼓励使用pip来安装管理这些第三方的包, 这里我们来看一下如何在CentOS 7.2上安装Python ...

  3. ccf--20160403---路径解析

    本题思路如下: 具体的细节如下:首先去掉字符串中重复出现的/,然后遇到..,就删除栈的最后一个元素,.忽略 下面是代码和题目: 问题描述 试题编号: 201604-3 试题名称: 路径解析 时间限制: ...

  4. HTML 中点击<a>标签,页面跳转执行过程

    HTML链接使用的是<a>标签 点击超链接,后台的执行大致如下: <a href="https://www.baidu.com">超链接</a> ...

  5. Unity3d 协程(IEnumerator)范例

    using UnityEngine; using System.Collections; public class Test : MonoBehaviour { IEnumerator Start ( ...

  6. 基于C#的单元测试(VS2015)

    这次来联系怎么用VS2015来进行C#代码的单元测试管理,首先,正好上次写了一个C#的WordCount程序,就用它来进行单元测试联系吧. 首先,根据VS2015的提示,仅支持在共有类或共有方法中支持 ...

  7. <20190103>别傻了,一些 新的技术注定只适合新人

    故障现象:    用vmware跑的虚拟机不兼容 某银行网银的U盾. 插入usb口后无法识别U盾, 解决过程: 1  更换2台各自不同电脑, 使用前置USB口, 后置USB口.  故障依旧. 2  使 ...

  8. Nginx SSL TLS部署最佳实践

    本文介绍nginx在提供HTTPS时使用的一些其他配置选项. 虽然这些功能有助于优化nginx的SSL和TLS,但这不是一个完整对加固nginx的介绍. 确保您的服务器安全的最佳方法是不仅需要正确的配 ...

  9. 装饰器 以及 django 中的应用

    装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓存.权 ...

  10. 利用Apache AXIS 1 发布WebService

    首先,AXIS 是apache的作品. 1.到apache去下载相关的包,包括axis.jar.axis-ant.jar.commons-discovery-0.2.jar等.将jar包放到WEB-I ...