2016-12-27 14 views
6

là gì tôi có thể thấy có hai cách khác nhau để nhậpsử dụng Quăn Niềng răng trong ES6 tuyên bố nhập khẩu

import React from 'react' 
import { render } from 'react-dom' 

thứ hai có dấu ngoặc đơn. Vậy đâu là sự khác biệt giữa cả hai? và khi nào tôi nên thêm dấu ngoặc vuông? cảm ơn

+0

Đề nghị đọc http://www.2ality.com/2014/09/es6-modules-final.html không cần phải hỏi điều này trên SO –

+0

Câu trả lời ngắn gọn: đây là sự phá hoại es6 sắp diễn ra. 'var React' sẽ được gán cho mọi thứ được xuất từ' 'react'' và 'var render' sẽ được gán cho thuộc tính' render' của bất kỳ thứ gì được xuất từ ​​'' react-dom'' – therobinkim

+2

Có thể trùng lặp [Khi nào nên Tôi sử dụng dấu ngoặc nhọn cho ES6 nhập khẩu?] (Http://stackoverflow.com/questions/36795819/when-should-i-use-curly-braces-for-es6-import) – jpdelatorre

Trả lời

8

Vâng sự khác biệt giữa việc bạn nên nhập các thành phần của mình within brackets or without it nằm trong cách bạn export nó.

Có hai loại xuất khẩu

  1. Mặc định Xuất
  2. Names Xuất

Một thành phần có thể có one default export and zero or more named xuất khẩu

Nếu một thành phần là một xuất khẩu mặc định thì bạn cần phải nhập khẩu không có dấu ngoặc đơn Ví dụ

export default App; 

Việc nhập khẩu nó như

import App from './path/to/App'; 

Một xuất khẩu tên là có thể giống như

export const A = 25; 

hoặc

export {MyComponent}; 

Các bạn có thể nhập nó như

01.
import {A} from './path/to/A'; 

hoặc

import {A as SomeName} from './path/to/A'; 

Nếu thành phần của bạn có một xuất khẩu mặc định và vài tên xuất khẩu, thậm chí bạn có thể kết hợp chúng lại với nhau trong khi nhập khẩu

import App, {A as SomeName} from './path/to/file'; 

Tương tự như vậy trong trường hợp reactreact-dom, ReactReactDOM tương ứng là default exports trong khi, ví dụ Componentnamed export trong reactrender là một xuất khẩu được đặt tên theo số react-dom. Thats lý do bạn có thể làm

import ReactDOM from 'react-dom'; 

và sau đó sử dụng

ReactDOM.render() 

hoặc sử dụng nó như đã đề cập trong câu hỏi của bạn.

+0

câu trả lời này có vẻ rất dứt khoát ... * * một ** mặc định xuất ** cộng ** xuất nhiều tên (cho phép mỗi tập tin script) ... và sau đó để nhập khẩu mặc định xuất khẩu: không có niềng răng, nhập khẩu được đặt tên xuất khẩu: đã sử dụng niềng răng. Là một trong những tham chiếu chính thức https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export? (một phần của tiêu chuẩn ES6) –

0

Không cần phải thêm khung nếu bạn xuất làm mặc định. bạn chỉ có thể mặc định trong mô-đun.

Trường hợp1:

chức năng mặc định xuất khẩu (num1, num2) { trở num1 + num2; }

Trường hợp2:

chức năng sum (num1, num2) { trở num1 + num2; }

xuất {tổng làm mặc định};

case3:

chức năng sum (num1, num2) { trở num1 + num2; }

tổng mặc định xuất;

bạn có thể nhập mặc định

nhập khẩu tổng hợp từ "./test.js";

console.log (tổng (1, 2));

0

Cân nhắc primitives.js,

export default (a, b) => a + b; 
export const sub = (a, b) => a - b; 
export const sqr = a => a**2; 

nó có thể được nhập khẩu như thế này,

import sum, { sub, sqr } from './primitives'; 

Trong trường hợp này, sum được gọi là "Default xuất khẩu" và một mô-đun có thể chứa một đĩa đơn " Mặc định chỉ xuất ".

subsqr được gọi là "Đặt tên đã xuất" và mô-đun có thể chứa nhiều lần xuất được đặt tên.

Các vấn đề liên quan