react-native 路由與選單demo
路由使用: react-native-router-flux
選單使用: react-native-side-menu
1. 效果
初始進入頁面
點選上方bar後
2. 元件
1. 選單元件
簡單定義了一個選單列表 列表中每一個item的點選都會重新重新整理整個介面 (使用父元件傳遞的方法)
import React, {Component} from 'react';
import { FlatList } from 'react-native-gesture-handler';
import {View, Text, TouchableHighlight, StyleSheet} from 'react-native';
const menuList = [
{
"id": "home",
"name": "首頁",
"routeKey": "fir"
},
{
"id": "pwd",
"name": "密碼管理",
"routeKey": "pwd"
},
{
"id": "notify_test",
"name": "推送測試",
"routeKey": "notify_test",
}
];
/**
* <FlatList data={menuList} renderItem={this.renderOneMenu}
keyExtractor = {item => item.id}/>
*/
class MyMenu extends Component {
constructor(props) {
super(props);
this.renderOneMenu = this.renderOneMenu.bind(this); // 需要bind一下 不然函式內訪問this存在問題
}
render() {
return (
<View>
<Text style={styles.head}>Menu</Text>
<FlatList data={menuList} renderItem={this.renderOneMenu}
keyExtractor = {item => item.id}/>
</View>
)
}
renderOneMenu({item}) {
let _this = this;
return (
<View>
<TouchableHighlight onPress = {() => _this.props.menuSelected(item)}>
<Text style={styles.item}> {item.name} </Text>
</TouchableHighlight>
</View>
)
}
}
const styles = StyleSheet.create({
head: {
fontSize: 20,
color: 'blue',
},
item: {
fontSize: 16,
fontWeight: '300',
paddingTop: 10,
left: 15
},
})
export default MyMenu;
2. 主頁面元件
包含選單和路由
狀態中定了初始狀態的route
(部分元件程式碼未貼出 )
import React, {Component} from 'react';
import Fir from "./srcjs/na/ui/fir";
import Pwd from "./srcjs/na/ui/Pwd";
import MyMenu from './srcjs/na/menu';
import MyBar from './srcjs/na/mybar';
import NotifyTest from './srcjs/na/ui/noti_test';
import {
Router,
Stack,
Scene,
Actions,
} from 'react-native-router-flux';
import {StyleSheet} from 'react-native';
import SideMenu from 'react-native-side-menu';
class Main extends Component {
constructor(props) {
super(props);
this.state = {
menuOpen: false,
routeKey: 'pwd',
}
this.openMenu = this.openMenu.bind(this);
this.closeMenu = this.closeMenu.bind(this);
this.menuSelected = this.menuSelected.bind(this);
window.openMenu = this.openMenu;
window.switchTo = this.switchTo;
window.closeMenu = this.closeMenu;
}
switchTo(key) {
Actions.push(key);
}
closeMenu() {
this.setState({
menuOpen: false,
})
}
openMenu() {
this.setState({
menuOpen: true,
})
}
menuSelected(item) {
this.setState({
menuOpen: false,
routeKey: item.routeKey,
});
}
render() {
const menu = <MyMenu menuSelected={this.menuSelected} />;
return (
<SideMenu menu={menu} width={10} isOpen={this.state.menuOpen}>
<Router>
<Stack key="root">
<Scene key="fir" initial={'fir' == this.state.routeKey} navBar={MyBar} back={false} component={Fir} title="fir" titleStyle={styles.routeTitle}></Scene>
<Scene key="pwd" initial={'pwd' == this.state.routeKey} navBar={MyBar} back={false} component={Pwd} title="密碼" titleStyle={styles.routeTitle}></Scene>
<Scene key="notify_test" initial={'notify_test' == this.state.routeKey} navBar={MyBar} back={false} component={NotifyTest}></Scene>
</Stack>
</Router>
</SideMenu>
)
}
}
const styles = StyleSheet.create({
routeTitle: {
justifyContent: 'center',
flex: 1,
color: 'red',
}
})
export default Main;
相關文章
- (四)選單導航及路由設定路由
- React Router、And、Redux動態選單和動態路由ReactRedux路由
- vue 動態載入路由,渲染左側選單欄Vue路由
- 觀察者+配置中心動態策略路由Demo路由
- 簡單的websocket demoWeb
- OSPF路由 與 ISIS路由 與路由學習對比路由
- Java NIO的簡單demoJava
- 人臉融合簡單demo
- Flutter vs Native與React-Native:檢查效能FlutterReact
- jQuery與CSS二級下拉選單jQueryCSS
- 【摸魚神器】一次搞定 vue3的 路由 + 選單 + tabsVue路由
- 簡單多播委託Demo
- 網路中IP是怎樣選路的?選路原理及簡單的路由表路由
- Laravel 用 abstract 與 interface 寫一個簡單的支付回撥 demoLaravel
- React-Native入門(2)-簡單闡述跳轉React
- ElementUI表格行編輯單元格編輯支援(輸入框,選擇框)DemoUI
- (系列十)Vue3中選單和路由的結合使用,實現選單的動態切換(附原始碼)Vue路由原始碼
- PCIE思考:簡單路由路由
- 360路由器V4與小米路由4簡單體驗,百元路由器誰更好?路由器
- 多租戶解析與Demo
- 前端路由與後端路由的思考前端路由後端
- react-nativeReact
- 仿寫美團酒店日期選擇元件(小程式、React-Native)元件React
- 分享cropper剪下單張圖片demo
- vue-cli 預設路由再子路由選中下的選中狀態問題Vue路由
- 最簡單的Flutter路由教程——跳轉、動畫與傳參Flutter路由動畫
- vue 動態選單以及動態路由載入、重新整理採的坑Vue路由
- 路由表單驗證路由
- SpringBoot切面Aop的demo簡單講解Spring Boot
- 使用 GPU 進行 Lightmap 烘焙 - 簡單 demoGPU
- springMVC簡單demo集合(持續更新中……)SpringMVC
- HTML6實現摺疊選單與手風琴選單的例項程式碼HTML
- 教程: TodoMVC 與 director 路由MVC路由
- WEEX-EROS | 移植自網易嚴選 app demoROSAPP
- ElementUI級聯選擇器動態載入DemoUI
- 單頁面多路由區操作路由
- 簡單介紹靜態路由路由
- C++ Qt開發:ToolBar與MenuBar選單元件C++QT元件