本地加载文件

时间:2018-05-15 08:05:39

标签: javascript css reactjs react-native

我是新来的本地人。我想知道无论如何都要将CSS,全局颜色加载到所有组件和屏幕,而不是在每个屏幕中导入。

我有一个可重复使用的stylesheet.js和colors.js,它们包含所有全局css和颜色。 的 stylesheet.js

'use strict';

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


module.exports = StyleSheet.create({

    container:{
        flex:1,
    },

    alwaysred: {
       color:colors.txt_main,
    },

});

但现在要在组件中使用我需要在每个组件中导入。 所以我想知道是否有更简单的方法将样式表和颜色导入所有scrrens /组件。

我尝试在index.js中导入,但是当我尝试访问样式属性时,它说样式未定义 像这样的东西

Index.js

import { AppRegistry } from 'react-native';
import stylesheet from './app/resources/styles/stylesheet';

import App from './app/App';

AppRegistry.registerComponent('newApp', () => App);

App.js

 <Text style={stylesheet.alwaysred}>
     New stylesheet imported globally
  </Text>

这给出了未定义样式表的错误。 我已经完成了这个Stackoverflow线程link来创建全局样式表

2 个答案:

答案 0 :(得分:3)

使用global

global.stylesheet = StyleSheet.create({

    container:{
        flex:1,
    },

    alwaysred: {
       color:colors.txt_main,
    },

});

答案 1 :(得分:1)

实现此目标的规范React方法是创建自己的样式组件。例如,如果您希望应用程序中的所有Text元素都是红色,则可以为其定义自己的组件:

// Text.js
import { Text, StyleSheet } from 'react-native';

const StyledText = ({ style, ...props }) => (
  <Text style={[styles.text, style]} {...props}></Text>
)

const styles = StyleSheet.create({
  text: {
    color: 'red'
  }
});

export default StyledText;

然后你可以使用那个你通常在react-native中使用Text的文本组件:

import Text from 'Text';

这有点冗长,因此人们常常使用glamorous-nativestyled-components这样的库来达到同样的效果。

// glamorous
const MyStyledText = glamorous.text({
  color: 'red'
});

// styled-components
const MyStyledText = styled.Text`
  color: red;
`;