UNPKG

weex-nuke

Version:

基于 Rax 、Weex 的高性能组件体系 ~~

168 lines (160 loc) 4.61 kB
/** @jsx createElement */ import { createElement, Component, render } from 'rax'; import View from 'nuke-view'; import Text from 'nuke-text'; import Image from 'nuke-image'; import Touchable from 'nuke-touchable'; import Tabbar from 'nuke-tabbar'; import Icon from 'nuke-icon'; import Iconfont from 'nuke-iconfont'; import { StyleProvider } from 'nuke-theme-provider'; import { decodeVar, DemoContainer, DemoSection, Demo, DemoItem, initDemo, } from '@alife/nuke-demo-helper'; const iconsMap = { home: '\ue601', cart: '\ue600', my: '\ue602', }; const App = class NukeDemoIndex extends Component { constructor() { super(); Iconfont({ name: 'tabicons', url: '//at.alicdn.com/t/font_3ife2q6deoxkcsor.ttf', }); this.state = { activeKey: 'tab1', }; this.renderFirst = this.renderFirst.bind(this); } renderFirst() { const a = 'xx'; return ( <View style={[styles.tabContent]}> <Tabbar itemStyle={{ width: 700 }} navTop activeKey={this.state.activeKey} > <Tabbar.Item title="title1" tabKey="tab1" /> <Tabbar.Item title="title2" tabKey="tab2" /> <Tabbar.Item title="title3" tabKey="tab3" /> </Tabbar> </View> ); } renderContent = pageText => ( <View style={[styles.tabContent]}> <Text style={styles.tabText}>{pageText}</Text> </View> ); renderItemNoIcon = (iconName, isActive, key) => ( <View style={styles.item}> <Text style={isActive ? styles.activeText : {}}>{iconName}</Text> </View> ); renderItem = (iconName, isActive, key) => ( <View style={styles.item}> <Text style={[styles.icon, isActive ? styles.activeText : {}]}> {iconsMap[iconName]} </Text> <Text style={isActive ? styles.activeText : {}}>{iconName}</Text> </View> ); render() { return ( <StyleProvider style={decodeVar(this.props.variable)}> <DemoContainer> <DemoSection style={styles.container} title="normal"> <Demo style={styles.container}> <DemoItem style={styles.container} direction="column"> <View style={styles.container}> <Tabbar navTop activeKey={this.state.activeKey}> <Tabbar.Item tabKey="tab1" render={this.renderItemNoIcon.bind(this, 'home')} /> <Tabbar.Item tabKey="tab2" render={this.renderItemNoIcon.bind(this, 'cart')} /> <Tabbar.Item tabKey="tab3" render={this.renderItemNoIcon.bind(this, 'my')} /> </Tabbar> </View> </DemoItem> </Demo> </DemoSection> <DemoSection style={styles.container} title="bottom tab"> <Demo style={styles.container}> <DemoItem style={styles.container} direction="column"> <View style={styles.container}> <Tabbar iconBar activeKey={this.state.activeKey}> <Tabbar.Item tabKey="tab1" render={this.renderItem.bind(this, 'home')} /> <Tabbar.Item tabKey="tab2" render={this.renderItem.bind(this, 'cart')} /> <Tabbar.Item tabKey="tab3" render={this.renderItem.bind(this, 'my')} /> </Tabbar> </View> </DemoItem> </Demo> </DemoSection> </DemoContainer> </StyleProvider> ); } }; const styles = { tabContent: { flex: 1, backgroundColor: '#dddddd', }, tabText: { fontSize: '40rem', }, container: { height: 200, }, item: { alignItems: 'center', justifyContent: 'center', }, icon: { fontFamily: 'tabicons', fontSize: '32rem', }, activeText: { // color: '#337838', }, // activeBorder: { // borderTopWidth: '5rem', // borderTopStyle: 'solid', // borderTopColor: '#337838', // }, // inactiveBorder: { // borderTopWidth: '5rem', // borderTopStyle: 'solid', // borderTopColor: '#eeeeee', // }, }; window.renderDemo = function (lang, variable) { render(<App variable={variable} />); }; renderDemo('en-us', window.THEME_VARIABLE); initDemo('tabbar');