React-Native进阶_1.抽取样式和组件
组织应用的样式和组件 就像抽取工具类一样,放在单独的文件中,在要使用的地方去导入调用即可。
1.导出样式
Style 样式可以单独写在一个JavaScript文件中,然后导出给其他JavaScript文件使用 比如创建创建Main.js 文件,里面导出styles import { StyleSheet, } from 'react-native'; const styles = StyleSheet.create({ item:{ flexDirection:'row', borderBottomWidth:1, borderColor:'rgba(100,53,201,0.1)', paddingBottom:6, marginBottom:6, flex:1, }, itemContent:{ flex:1, marginLeft:13, marginTop:6, }, itemHeader:{ fontSize:18, fontFamily:'Helvetica Neue', fontWeight:'300', color:'#6435c9', marginBottom:6, }, itemMeta:{ fontSize:16, color:'rgba(0,0,0,0.6)', marginBottom:6, }, redText:{ color:'#db2828', }, listView:{ paddingTop: 20, backgroundColor: '#F5FCFF', }, loading:{ flex:1, justifyContent:'center', alignItems:'center', }, overlay: { backgroundColor: 'rgba(0,0,0,0.3)', alignItems: 'center' }, overlayHeader: { fontSize: 33, fontFamily: 'Helvetica Neue', fontWeight: '200', color: '#eae7ff', padding: 10 }, overlaySubHeader: { fontSize: 16, fontFamily: 'Helvetica Neue', fontWeight: '200', color: '#eae7ff', padding: 10, paddingTop: 0, }, backImage: { // alignItems:'center', flex: 1, //justifyContent:'center', resizeMode: 'cover', }, image: { height: 150, width: 100, justifyContent: 'center', }, itemOne: { // alignSelf:'flex-start', }, itemTwo: { //alignSelf:'center', }, itemThree: { flex: 2, }, itemText: { fontSize: 33, fontFamily: 'Helvetica Neue', fontWeight: '200', color: '#6435c9', padding: 30, }, Container: { //alignItems:'flex-start',// flex-start 靠在左边显示 center 居中 flex-end 尾部 // flexDirection: 'column',//row column 方向 backgroundColor: '#eae7ff', flex: 1, //justifyContent:'center',//center ; 居中 flex-end 位于底部 space-between/space-around屏幕平均分配 }, Text: { color: '#6435c9', fontSize: 26, textAlign: 'center', fontStyle: 'italic', letterSpacing: 2, lineHeight: 33, fontFamily: 'Helvetica Neue', fontWeight: '300', textDecorationLine: 'underline', textDecorationStyle: 'dashed', }, }); export {styles as default}; 然后在其他JavaScript 文件中通过 import styles from './app/Styles/Main'; 导入声明的样式,然后直接使用styles /** * Sample React Native App * https://github.com/facebook/react-native * @flow */ 'use strict' import React, {Component} from 'react'; import styles from './app/Styles/Main'; import { AppRegistry, Text, Image, View, ListView, } from 'react-native'; //import {AppRegistry,} from 'react-native'; //import Day0718 from './componets/Home' let REQUEST_URL = 'https://api.douban.com/v2/movie/top250'; export default class Day0718 extends Component { constructor(props) { super(props); this.state = { dataSource:new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}), loaded: false, }; } componentDidMount(){ this._fetchData(); } _fetchData(){ fetch(REQUEST_URL) .then(response => response.json()) .then(responseData =>{ this.setState({ movies:this.state.dataSource.cloneWithRows(responseData.subjects), loaded: true, }); }) .done(); } render() { if(!this.state.loaded){ return this._renderLoadingView(); } return ( <View style={styles.Container}> <ListView dataSource={this.state.movies} renderRow={this._renderMovieList} style={styles.listView} /> </View> ); } _renderMovieList(movie){ return( <View style = {styles.item}> <View style = {styles.itemImage}> <Image style ={styles.image} source ={{uri:movie.images.large}}/> </View> <View style = {styles.itemContent}> <Text style ={styles.itemHeader}>{movie.title}</Text> <Text style ={styles.itemMeta}>{movie.original_title}({movie.year})</Text> <Text style ={styles.redText}>{movie.rating.average}</Text> </View> </View> ); }; _renderLoadingView(){ return ( <View style ={styles.loading}> <Text > loading movies.....</Text> </View> ); }; } class ComText extends React.Component { render() { return ( <Text style={styles.itemText}> {this.props.children} </Text> ); } } AppRegistry.registerComponent('Day0718', () => Day0718);
2.导出组件
MovieList.js /** * Sample React Native App * https://github.com/facebook/react-native * @flow */ 'use strict' import React, {Component} from 'react'; import styles from '../Styles/Main'; import { Text, Image, View, ListView, } from 'react-native'; let REQUEST_URL = 'https://api.douban.com/v2/movie/top250'; export default class Day0718 extends Component { constructor(props) { super(props); this.state = { dataSource:new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}), loaded: false, }; } componentDidMount(){ this._fetchData(); } _fetchData(){ fetch(REQUEST_URL) .then(response => response.json()) .then(responseData =>{ this.setState({ movies:this.state.dataSource.cloneWithRows(responseData.subjects), loaded: true, }); }) .done(); } render() { if(!this.state.loaded){ return this._renderLoadingView(); } return ( <View style={styles.Container}> <ListView dataSource={this.state.movies} renderRow={this._renderMovieList} style={styles.listView} /> </View> ); } _renderMovieList(movie){ return( <View style = {styles.item}> <View style = {styles.itemImage}> <Image style ={styles.image} source ={{uri:movie.images.large}}/> </View> <View style = {styles.itemContent}> <Text style ={styles.itemHeader}>{movie.title}</Text> <Text style ={styles.itemMeta}>{movie.original_title}({movie.year})</Text> <Text style ={styles.redText}>{movie.rating.average}</Text> </View> </View> ); }; _renderLoadingView(){ return ( <View style ={styles.loading}> <Text > loading movies.....</Text> </View> ); }; } 在要使用的JavaScript 文件中 导入使用 /** * Sample React Native App * https://github.com/facebook/react-native * @flow */ 'use strict' import React, {Component} from 'react'; import MovieList from './app/Components/MovieList'; import { AppRegistry, } from 'react-native'; class Day0718 extends Component { constructor(props) { super(props); } render() { return( <MovieList />); } } AppRegistry.registerComponent('Day0718', () => Day0718);
-------------------起分享,一起进步!需要你们
-----------------------欢迎各位对React-Native感兴趣的小伙伴加群
React-Native进阶_1.抽取样式和组件的更多相关文章
- 基于React Native的Material Design风格的组件库 MRN
基于React Native的Material Design风格的组件库.(为了平台统一体验,目前只打算支持安卓) 官方网站 http://mrn.js.org/ Github https://git ...
- [RN] React Native 好用的时间线 组件
React Native 好用的时间线 组件 效果如下: 实现方法: 一.组件封装 CustomTimeLine.js "use strict"; import React, {C ...
- react native进阶
一.前沿||潜心修心,学无止尽.生活如此,coding亦然.本人鸟窝,一只正在求职的鸟.联系我可以直接微信:jkxx123321 二.项目总结 **||**文章参考资料:1. http://blog ...
- [React Native]高度自增长的TextInput组件
之前我们学习了从零学React Native之11 TextInput了解了TextInput相关的属性. 在开发中,我们有时候有这样的需求, 希望输入区域的高度随着输入内容的长度而增长, 如下: 这 ...
- React Native填坑之旅--Stateless组件
Stateless component也叫无状态组件.有三种方法可以创建无状态组件. 坑 一般一个组件是怎么定义的: 很久以前的方法: const Heading = createClass({ re ...
- React Native 之轮播图swiper组件
注释:swiper组件是第三方组件 所以在使用之前应该先在命令行安装,然后将第三方的模块引入(第三方模块地址:https://github.com/leecade/react-native-swipe ...
- React Native学习-调取摄像头第三方组件:react-native-image-picker
近期做的软件中图片处理是重点,那么自然也就用到了相机照相或者相册选取照片的功能. react-native中有image-picker这个第三方组件,但是0.18.10这个版本还不是太支持iPad. ...
- react native 传值方式之 :子组件通过调用 其父组件传来的方法 传值回其父组件
- React Native 学习笔记--进阶(二)--动画
React Native 进阶(二)–动画 动画 流畅.有意义的动画对于移动应用用户体验来说是非常必要的.我们可以联合使用两个互补的系统:用于全局的布局动画LayoutAnimation,和用于创建更 ...
随机推荐
- 通过map文件了解堆栈分配(STM32、MDK5)--避免堆栈溢出
环境:STM32F103C8T6,MDK5 在最近的一个项目的开发中,每当调用到一个函数,程序就直接跑飞.debug跟进去看不出什么逻辑错误,但发现函数内局部变量声明之后,全局变量的值被清零,后来查看 ...
- mysql字符串分割操作
SELECT '1,2,3,4,5,6,7,8' FROM dual; -- 列转行分割 ),) FROM () a JOIN mysql.help_topic b ); -- 测试 ),) as p ...
- Protocol Buffers数据传输及存储协议简单使用
我们知道Protocol Buffers是Google定义的一种跨语言.跨平台.可扩展的数据传输及存储的协议,因为将字段协议分别放在传输两端,传输数据中只包含数据本身,不需要包含字段说明,所以传输数据 ...
- js 苹果手机 keyup 事件不生效的问题
$(document).on('keyup','input[name="txtInp"]',function(){}) 改 $(document).on('input proper ...
- 关于xftp连接不了Linux,但是却可以用xshell连接Linux
解决方法:用sftp协议,不要用ftp协议
- 解题报告:hdu1008 Elvator
2017-09-07 19:30:22 writer:pprp 比较顺利,最近生活出现了各种问题, 发生了很多矛盾,我要耐下心来,最重要的不是努力不努力,而是选择 希望我能处理好人际关系还有学业上的压 ...
- POJ 1985 Cow Marathon(树的直径模板)
http://poj.org/problem?id=1985 题意:给出树,求最远距离. 题意: 树的直径. 树的直径是指树的最长简单路. 求法: 两遍BFS :先任选一个起点BFS找到最长路的终点, ...
- 在.Net中进行SQL Server数据库备份与还原操作实用类
#region 类说明 //----------------------------------------------------------------------------- // // 项目 ...
- input输入框延时发送请求问题
同样是面试遇到的问题,input输入框,怎么减少发送请求次数. 键盘抬起触发事件,首先清除定时器,再开启定时器.只要小于1s的连续输入,都会先把上一次定时器清除.停顿一秒后,开始执行请求事件(此处为c ...
- Qwt中鼠标获取坐标点
void getPoint(QwtPlot *plot) { QPoint point = plot->canvas()->mapFromGlobal(QCursor::pos()); Q ...