UNPKG

weex-nuke

Version:

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

150 lines (142 loc) 3.52 kB
# ep-tabbar - order: 0 作为容器组件的基础使用方式 --- ```js /** @jsx createElement */ import { createElement, Component, render } from 'rax'; import View from 'nuke-view'; import Text from 'nuke-text'; import Touchable from 'nuke-touchable'; import Tabbar from 'nuke-ep-tabbar'; const NAV_ITEM_WIDTH = 300; const KEY_LIST = [ { title: '我的', key: 'my', style: { width: NAV_ITEM_WIDTH } }, { title: '购物车', key: 'cart', style: { width: NAV_ITEM_WIDTH } }, { title: '淘宝心选', key: 'xinxuan', style: { width: NAV_ITEM_WIDTH } } ]; let App = class NukeDemoIndex extends Component { constructor() { super(); this.state = { key: 0 }; } /** * 渲染tab主体的方法,入参为当前tab的key值。根据不同的key值选择渲染不同的route */ renderPage = (itemData, currKey, prevKey) => { return ( <View style={{ backgroundColor: 'red' }}> <Text>tab:{currKey}</Text> </View> ); }; /* * key:选中的值 * type:切换类型 可以是滑动pan/点击导航click/code调用 code 等类型 */ onChange = (currKey, prevKey, type) => { console.log( `[Debug] ${type} to currKey of 【${currKey}】 & prevKey is 【${prevKey}】` ); }; /** * 渲染每个nav item的方法 * 可以增加renderCustom方法,用于渲染固定位置 */ renderNavItem = (itemData, index, currIndex) => { let color = 'white'; if (index === currIndex) { color = '#333'; } return ( <View style={[s.navItem, { width: itemData.style.width }]}> <Text style={{ color: color }}>{itemData.title}</Text> </View> ); }; /** * 渲染ep绑定时的tab切换加载 */ renderLoading() { return <Text>加载中...</Text>; } /** * 在滚动发生前的回调,可以用来阻止滚动发生 */ beforeSlide(index, type) { return true; } render() { return ( <Tabbar activeKey={this.state.key} dataSource={KEY_LIST} navStyle={s.navStyle} navFocusStyle={s.focusStyle} renderNavItem={this.renderNavItem} renderLoading={this.renderLoading} navTop={true} epEnable={true} onChange={this.onChange} forbidNavScroll={false} beforeSlide={this.beforeSlide} > <Tabbar.Item key="my" style={[s.tabItem, { backgroundColor: 'red' }]}> <Text style={s.text}>tab1</Text> </Tabbar.Item> <Tabbar.Item key="cart" style={[s.tabItem, { backgroundColor: 'blue' }]} > <Text style={s.text}>tab2</Text> </Tabbar.Item> <Tabbar.Item key="xinxuan" style={[s.tabItem, { backgroundColor: 'yellow' }]} > <Text style={s.text}>tab3</Text> </Tabbar.Item> </Tabbar> ); } }; const s = { navStyle: { width: 750, height: 88, backgroundColor: '#0D0630', justfiyContent: 'center' }, focusStyle: { backgroundColor: '#E6F9AF', position: 'absolute', height: 88, width: NAV_ITEM_WIDTH, color: '#333' }, navItem: { flex: 1, justifyContent: 'center', alignItems: 'center', fontSize: 28, fontWeight: 'bold', color: 'white' }, tabItem: { justifyContent: 'center', alignItems: 'center', flex: 1, backgroundColor: 'red' }, tabContainer: { flex: 1 }, text: { justifyContent: 'center', alignItems: 'center' } }; render(<App />); ```