2016-11-12 71 views
7

我對我缺乏知識表示歉意。我想在文件中導入一個const值。我在同一個目錄中有兩個文件Home.js和styles.js。es6:如何在導出後導入const?

Home.js

import React from 'react'; 
import styles from './styles'; 

const Home = (props) => { 

    const HEADER_MAX_HEIGHT = 200; 

} 

export { HEADER_MAX_HEIGHT }; 
export default Home; 

而且在styles.js

import { StyleSheet } from 'react-native' 
import { HEADER_MAX_HEIGHT } from './Home'; 

export default StyleSheet.create({ 
    header: { 
     height: HEADER_MAX_HEIGHT 
    } 
}); 

,但我得到這個錯誤

找不到變量:HEADER_MAX_HEIGHT

如何在styles.js中訪問該變量?

回答

7

嘗試:

Home.js

import React from 'react'; 
import styles from './styles'; 

export const HEADER_MAX_HEIGHT = 200; 

const Home = props => <h1>Home</h1>; 

export default Home; 

styles.js

import { StyleSheet } from 'react-native'; 
import { HEADER_MAX_HEIGHT } from './Home'; 

export default StyleSheet.create({ 
    header: { 
    height: HEADER_MAX_HEIGHT, 
    }, 
}); 

HEADER_MAX_HEIGHT需求是Home.js文件中,但Home組件之外。你可以在這裏閱讀:Javascript Scope

+0

它不工作。 – bazi

+0

你確定.Home.js和styles.js都是連線嗎?也許Home.js Styles.js?大寫? –

+0

我希望它是這樣的。但不是。也許它不工作,因爲它們是在同一時間從彼此進口。這可能是問題嗎? – bazi

2

這只是函數範圍規則!

// Outer scope 
const Home = (props) => { 
    // Inner scope 
    const HEADER_MAX_HEIGHT = 200; 

} 

console.log(HEADER_MAX_HEIGHT); // Uncaught ReferenceError: HEADER_MAX_HEIGHT is not defined 

您無權訪問外部範圍內的HEADER_MAX_HEIGHT。所以當你試圖導出它時,它只是返回一個錯誤。

嘗試這樣的:

import React from 'react'; 
import styles from './styles'; 

const HEADER_MAX_HEIGHT = 200; 

const Home = (props) => {  
    // ... 
} 

export { HEADER_MAX_HEIGHT }; 
export default Home; 

現在styles.js:

import { HEADER_MAX_HEIGHT } from './Home'; 
+0

它不工作。說HEADER_MAX_HEIGHT是undefined,在styles.js裏 – bazi

+0

請問,你能告訴我styles.js嗎?你是否從家中導入HEADER_MAX_HEIGHT? –

+0

是的,我願意。 styles.js與問題中的相同。 – bazi

8

你應該用完全不同的方式構造你的代碼。

一個很好的規則是將所有常量保存在一個單獨的文件中,遠離所有視圖。

嘗試爲所有App常量創建一個文件。 Constants.js是個不錯的選擇。

然後把常數是這樣的:

const Constants = { 
    HEADER_MAX_HEIGHT: 200, 
    OTHER_THINGS: 'whatever' 
} 
export default Constants 

那麼無論你需要的時候,你可以導入你的常量。

import Constants from '../Folder/Constants' 

,並使用像這樣的

const x = Constants.HEADER_MAX_HEIGHT 
+2

這應該是正確的答案!感謝 – leo7r

+0

它應該是屬性:不= = – SameerShaik