2016-11-12 112 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