我试图确定这两个之间是否存在任何重大差异,除了能够通过以下方式导入export default:
import myItem from 'myItem';
Run Code Online (Sandbox Code Playgroud)
使用export const我可以做:
import { myItem } from 'myItem';
Run Code Online (Sandbox Code Playgroud)
我想知道除此之外是否存在任何差异和/或用例.
我想问最后一句话是什么意思和做什么(导出默认的HelloWorld;)但我找不到任何关于它的教程.
// hello-world.jsx
import React from 'react';
class HelloWorld extends React.Component {
render() {
return <p>Hello, world!</p>;
}
}
export default HelloWorld;
Run Code Online (Sandbox Code Playgroud) 我有一个Vue 2项目,我编写了一个简单的函数来翻译几个月的日期,我想在我的一个组件中导入,但是我收到一个错误:
在'@/utils/date-translation'中找不到导出'default'(导入为'translateDate')
来自src文件夹的相对文件路径是正确的,我正在导出这样的函数:
export function translateDate(date) {
// my code
}
Run Code Online (Sandbox Code Playgroud)
然后我在组件中导入它,如下所示:
import translateDate from '@/utils/date-translation'
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
今天我使用导入别名来更改 React 中导入的名称:
import { Something as SomethingElse } from 'somewhere';
Run Code Online (Sandbox Code Playgroud)
然而,在将此文件切换到 TypeScript 后,同样的事情似乎不可能实现。只有删除别名后我才能使用导入:
import Something from 'somewhere';
Run Code Online (Sandbox Code Playgroud)
是否可以在 TypeScript 中使用导入别名?
我已经在stackoverflow中提到了所有问题.但没有提出为什么以及何时使用默认导出.
我刚看到默认值可以提到"当文件中只有一个导出时"
在es6模块中使用默认导出的任何其他原因?
想在ES6 javascript中实例化一个模块并转换为ES5.我在我的项目中设置了一个新类,即es6/webpack.我有2个文件:track.js,其中包含以下内容 -
export default class Track {
constructor() {
this.o = {};
}
}
Run Code Online (Sandbox Code Playgroud)
另一个是index.js -
import { Track } from './track';
const track = new Track();
console.log(track);
Run Code Online (Sandbox Code Playgroud)
我试图让控制台日志显示一个空对象.相反,我得到 - Uncaught TypeError:_track.Track不是构造函数
如果我们指定默认导出:
export class Foo {}
export default Foo;
Run Code Online (Sandbox Code Playgroud)
然后我们可以在导入期间省略花括号(如本答案中所述):
import { Foo } from "foo"; // becomes:
import Foo from "foo";
Run Code Online (Sandbox Code Playgroud)
那很好,但是在特殊情况下是否有任何非风格的理由偏爱另一个?例如,是否存在某些约定,或者某些约定与某些工具不兼容,或者是否具有不同的含义?
(基于这个讨论和其他人,我的理解是,export default可能已经出现了一种处理单个主要对象(如$)的导出的方法,现在由import * as foo from "foo"它处理.此外,似乎默认导入语法不强制执行naming(import fooAlias from "foo"),而标准导入import { fooAlias } from "foo"将是一个编译错误,除非别名是explicit(Foo as fooAlias).除此之外,我还没有找到关于何时应该使用其中一个的详细信息.)
我正在关注react-native的课程,我在尝试向页面添加模态组件时遇到了这个错误:
元素类型无效:期望一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:undefined.
这是我的代码:
EmployeeEdit.js
import _ from 'lodash';
import React, { Component } from 'react';
import { connect } from 'react-redux';
import Communications from 'react-native-communications';
import { employeeUpdate, employeeSave, employeeReset } from '../actions';
import { Card, CardSection, Button, Confirm } from './common';
import EmployeeForm from './EmployeeForm';
class EmployeeEdit extends Component {
constructor(props) {
super(props);
this.state = { showModal : false};
this.onButtonPress = this.onButtonPress.bind(this);
this.onTextPress = this.onTextPress.bind(this);
}
componentWillMount() {
_.each(this.props.employee, (value, prop) => {
this.props.employeeUpdate({prop, value});
});
}
componentWillUnmount() { …Run Code Online (Sandbox Code Playgroud) 我使用生成了一个应用程序create-react-app,我想使用
crypto-js
我收到以下错误
crypto.sha256() is not a function
我有一个actions.js文件导出这样的动作
export var toggleTodo = (id) => {
return {
type: 'TOGGLE_TODO',
id
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用es6导入它时,我得到错误
Uncaught TypeError: Cannot read property 'toggleTodo' of undefined
Run Code Online (Sandbox Code Playgroud)
但当我需要它使用常见的js要求它工作得很好!有人可以向我解释为什么会发生这种情况,我的意思是我读到这两个是相同的事情......似乎有些不同?
// var actions = require('actions') working
// dispatch(actions.toggleTodo(id));
import actions from 'actions' //not working
dispatch(actions.toggleTodo(id));
Run Code Online (Sandbox Code Playgroud) 从Node.js中的模块导出函数的语法是什么?
function foo() {}
function bar() {}
export foo; // I don't think this is valid?
export default bar;
Run Code Online (Sandbox Code Playgroud) 给定以下模块,如何导入常量模块并避免包含默认属性:
// constants.es6
export default {
foo: 'foo',
bar: 'bar'
}
// anotherModule.es6
import * as constants from './constants';
Run Code Online (Sandbox Code Playgroud)
结果是 constants.default.foo
我似乎无法得到正确的语法来结束 constants.foo
我正在关注目前使用ES6的React教程.我是ES6的新手,我一直看到在从模块导出名称时经常使用默认关键字.我一直试图理解默认单词背后的原因是什么,但还没有找到我能理解的答案.
这是一个例子:
const Header = () => {
return (
<nav>
<IndexLink to="/" activeClassName="active">Home</IndexLink>
{" | "}
<Link to="/about" activeClassName="active">About</Link>
{" | "}
<Link to ="/course" activeClassName="active">Courses</Link>
</nav>
);
};
export default Header;
Run Code Online (Sandbox Code Playgroud)
提前谢谢,如果我不清楚,请告诉我.
javascript ×10
ecmascript-6 ×6
reactjs ×5
es6-modules ×3
typescript ×2
cryptojs ×1
es6-class ×1
import ×1
module ×1
node.js ×1
react-native ×1
transpiler ×1
vue.js ×1
webpack ×1