2017-03-31 62 views
-2

我以爲行:React/Redux中使用花括號進口的規則是什麼?

import { FETCH_WEATHER } from "../actions/index"; 

的意思是:我們不導入整個對象,但是從文件../actions/index.js

一個例子是進口obj.FETCH_WEATHER,我們使用

import React, { Component } from "react"; 

而且,我們從"react"導入,我們在這裏將其稱爲obj,並在我們自己的文件中將其命名爲React,並將其命名爲obj.Component,我們將其命名爲s Component在我們自己的文件中。

(1)是真的嗎?

(2)文件../actions/index.js中,內容實際上是:

export const FETCH_WEATHER = "FETCH_WEATHER"; 

所以沒有對象,和沒有鍵/值對可言。那麼import { FETCH_WEATHER }是什麼意思?

+0

有一個對象。整個模塊是對象,並且導出的東西作爲屬性附加到對象上,並被訪問。 – Li357

+0

我也是這麼想的,所以我把它改成了'從...導入foo,然後用'foo。 FETCH_WEATHER',但它給了'未捕獲的TypeError錯誤:無法讀取未定義的屬性'FETCH_WEATHER' –

+0

[在reactjs中,我應該在導入時何時添加括號](http:// stackoverflow。com/questions/41337709/in-reactjs-when-should-i-add-brackets-when-import) –

回答

0

該模塊可能會導出一個默認對象和許多命名項。

這是默認模塊出口:

const MyClass = (props) => (
    <div/> 
) 

export default MyClass 

我們可以導入這樣的:

import MyClass from "../actions" 

大括號允許出口的命名項目,因此,如果我們有這樣的出口:

const myConst = "The Text" 
const myHelper = (num) => 2*num 

export default MyClass 
export {myHelper, myConst} 

我們可以像這樣導入它:

import MyClass, {myHelper, myConst} from "../actions" 

有沒有必要在路徑添加index - 它是默認添加。所以寫的不夠,而不是「../actions/index」

+0

你可以修復'MyObjectHelper,SomeMore',因爲我沒有看到他們在文件中導出東西... –

+0

謝謝,它是固定的。 – user394010

1

Mozilla開發者網絡擁有ES6進口一個很好的文檔「../actions」:

import – JavaScript | MDN

基本上內進口大括號被命名爲導入,並且必須與您從中導入的庫中的命名導出相匹配。這可以是導出的任何對象/函數/常量。

使用不帶大括號的導入從庫中導入默認變量/對象/函數。默認導出具有default關鍵字作爲導出語句的一部分:export default someVariable

相關問題