React Native For Android
前言
React Native介绍这里简单的介绍下
对于
Navigator这是一个导航器,直白的理解就是实现界面之间的跳转,在 <Navigator initialRoute={{title: '主页',component: Welcome}} configureScene={(route,routeStack) => Navigator.SceneConfigs.FloatFromLeft} renderScene={this.renderScene}/> initialRoute
initialRoute={{title: '主页',component: Welcome}} 里面的参数名不受限制,但是你必须要指明跳转的 renderScene该配置就是执行没一个 renderScene={this.renderScene} renderScene(route,navigator){ _navigator = navigator; let DefaultComponet = route.component; return <DefaultComponet route = {route} navigator = {navigator}/> } 在 this.renderScene = this.renderScene.bind(this);
push与pop
<TouchableOpacity onPress={() => this.props.navigator.push({ title: '详情',component: Detail,number: rowID,})}> <View style={styles.item}> <View style={styles.content}> <Text style={styles.des}> {rowData.title} </Text> .... </View> </TouchableOpacity>
<TouchableOpacity onPress={() => this.props.navigator.pop()}> <Image source={require('../imgs/back.png')} style={styles.back}/> </TouchableOpacity> 在点击以后渲染出来的界面中调用 ListView是不是感觉很亲切,它要实现的功能跟 rowHasChanged在渲染之前要设置判断该数据是否需要从新渲染,这样就减少许多不必要的渲染步骤,该方法能帮助我们进行判断。 const listView = new ListView.DataSource({ rowHasChanged: (r1,r2) => r1!==r2}); cloneWithRows为 this.state={ dataSource: listView.cloneWithRows(this._rowData())}; } 绑定最后在渲染 <ListView style={styles.container} dataSource={this.state.dataSource} renderRow={this._renderRow.bind(this)}/> </View> 其中 _renderRow(rowData,sectionID,rowID,highlightRow){ return( <TouchableOpacity onPress={() => this.props.navigator.push({ title: '详情',})}> <View style={styles.item}> <View style={styles.content}> <Text style={styles.des}> {rowData.title} </Text> <View style={styles.bottom}> <Text style={styles.fb}> {"发布: "+rowData.fb} </Text> <Text style={styles.data}> {"日期: "+rowData.data} </Text> </View> </View> <Image style={styles.image} source={{uri: rowData.image}}/> </View> </TouchableOpacity> ); }
style={{flex: 1}} 或者通过 const styles = StyleSheet.create({ container: { flex: 1,backgroundColor: '#F5FCFF',},title: { backgroundColor: 'royalblue',justifyContent: 'center',alignItems: 'center',borderColor: 'gray',borderBottomWidth: 1,... });
TabNavigator这里再简单介绍下 <TabNavigator> <TabNavigator.Item title="新闻" selected={this.state.selectedTab==='news'} selectedTitleStyle={styles.selectedText} titleStyle={styles.text} renderIcon={() => <Image source={require('../imgs/ic_news.png')} style={styles.image}/>} renderSelectedIcon={() => <Image source={require('../imgs/ic_news_pressed.png')} style={styles.image}/>} onPress={() => this.setState({selectedTab: 'news'})}> <News {...this.props}/> </TabNavigator.Item> ... </TabNavigator> 通过
效果图
项目地址:https://github.com/idisfkj/RN... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |