Router 默认提供了接近 iOS 原生样式的导航栏(类似 NavigatorIOS)。可以通过配置 Ext.defaults.navBar.isShow = true
来使用。
// 配置全局导航栏
Ext.defaults.navBar = {
// 是否显示,默认为 false,不显示
isShow: true,
// 背景色,默认 Qunar 蓝
backgroundColor: 'red',
// 导航栏文字颜色,默认白色
color: 'black',
// 导航栏高度,默认44(不包括状态栏高度)
height: 80,
//左右按钮宽度,默认60
buttonWidth:60,
//状态栏背景色,默认透明
statusBarBackgroundColor:'transparent',
// 导航栏按钮点击不透明度,默认 0.6
activeOpacity: 0.8,
// 左侧按钮文字,默认'返回'
leftButtonText: '<back'
};
页面的routerPlugin可以覆盖全局配置的任意一项,并且新增了标题、导航栏左右按键和页面样式的相关配置。
class base extends QView {
// 配置页面导航栏
static routerPlugin = {
// 是否显示导航栏
isShow: true,
// 背景色,默认 Qunar 蓝
backgroundColor: 'red',
// 文本颜色,默认白色
color: 'black',
// 按钮宽度
buttonWidth:60,
// 状态栏背景色
statusBarBackgroundColor:'red',
// 导航栏高度
height:80,
//activeOpacity
activeOpacity:0.6
// 标题,默认route.name
// 支持传入多种参数:
// 字符串;
// 返回JSX的函数,接受store作为参数:
// (store)=>(<TouchableOpacity onPress={()=>alert('custom jsx')}>
// <Text>test</Text>
// </TouchableOpacity>)
// JSX
title: 'Base',
// 左侧按钮,默认为字符串'返回'
// 同样支持传入字符串/函数/JSX
leftButtonText: <Text>返回</Text>,
// 左侧按钮点击事件,默认 `Ext.back()`
// 接受一个参数store
leftButtonPressEvent(store) {
alert('left...')
},
// 右侧按钮文字,默认空字符串
// 同样支持传入字符串/函数/JSX
rightButtonText(store){
return (
<Text>test</Text>
);
},
// 右侧按钮点击事件,默认空函数
rightButtonPressEvent(store) {
alert('right...');
}
};
}
setTitle(title)
设置当前页面导航栏的标题。
title
String/Function/JSX 使用方式与配置里面的title完全一致举例:
//传入字符串
Ext.Router.setTitle('new Title');
//传入JSX
Ext.Router.setTitle(
<Text>new Title</Text>
);
//传入返回JSX的函数
Ext.Router.setTitle((store)=>(
<Text>Test</Text>
));
由于 JavaScript 和 Native 之间的异步通信问题,在给当前页面通过 setTitle
设置标题时,请在当前页面的 actived
生命周期之后调用(包括 actived
)
open(viewName, {title})
打开新页面并设置新页面的标题。
title
String 标题举例:
Ext.open('pageA', {
title: 'new Title',
});