- 原文博客:ReactNative相关文章
- 之前的文章只是记录了一些常用的组件, 现在记录一些偶尔会用到的一些组件
Slider
Slider 用于选择一个范围值的组件
相关属性
// 滑块的初始值。这个值应该在最小值和最大值之间,默认值是0
value={4}
// 滑块的最小值(当滑块滑到最左侧时表示的值),默认为0
minimumValue={1}
// 滑块的最大值(当滑块滑到最右端时表示的值),默认为1
maximumValue={10}
// 滑块的最小步长,这个值应该在0到(最大值-最小值)之间,默认值为0
step={2}
// 滑块左侧轨道的颜色。在iOS上默认为一个蓝色的渐变色
// ios:滑块右侧区域的颜色。android:滑块左侧区域的颜色
minimumTrackTintColor={'red'}
// ios:滑块左侧区域的颜色。android:滑块右侧区域的颜色
minimumTrackTintColor={'yellow'}
仅IOS支持:
// 给滑块设置一张图片,只支持静态图片
thumbImage={require('./image/slider.png')}
// 给轨道设置一张背景图。只支持静态图片。图片最中央的像素会被平铺直至填满轨道
trackImage={require('./image/slider1.png')}
// 指定一个滑块左侧轨道背景图,仅支持静态图片。图片最右边的像素会被平铺直至填满轨道
minimumTrackImage={require('./image/left.png')}
// 指定一个滑块右侧轨道背景图,仅支持静态图片。图片最左边的像素会被平铺直至填满轨道
maximumTrackImage={require('./image/right.png')}
仅android支持
// 滑块颜色
thumbTintColor={'orange'}
相关函数
// 用户松开滑块的时候调用此回调,无论值是否变化。回调值为当前值
onSlidingComplete={() => {}}
在用户拖动滑块的过程中不断调用此回调
onValueChange={() => {}}
StatusBar
- 控制应用状态栏的组件
- 由于StatusBar可以在任意视图中加载,且后加载的设置会覆盖先前的设置。因此在配合导航器使用时,请务必考虑清楚StatusBar的放置顺序
- 有些场景并不适合使用组件,因此StatusBar也暴露了一个静态API。然而不推荐大家同时通过静态API和组件来定义相同的属性,因为静态API定义的属性值在后续的渲染中会被组件中定义的值所覆盖
相关属性介绍
通用属性
// 指定状态栏的变化是否应以动画形式呈现。目前支持这几种样式:backgroundColor, barStyle和hidden animated bool // 是否隐藏状态栏 hidden bool
仅支持iOS
// 设置状态栏文本的颜色, 可选值: enum('default', 'light-content', 'dark-content')
barStyle={'light-content'}
// 设定网络活动指示器(就是那个菊花)是否显示在状态栏
networkActivityIndicatorVisible={true}
// 通过 hidden 属性来显示或隐藏状态栏时所使用的动画效果,有两种选择:fade(默认值)、slide
showHideTransition={'fade'}
仅支持Android
// Android 设备上状态栏的背景颜色
backgroundColor={'blue'}
translucent
true
translucent={true}
currentHeight
-
React Native在Android平台为StatusBar组件提供了一个静态常量currentHeight,我们可以通过读取这个常量来得到Android手机状态栏的高度。 - 注意:
currentHeight不是一个属性,我们直接访问StatusBar.currentHeight就可以了
Alert
- 启动一个提示对话框,包含对应的标题和信息。
- 默认情况下,对话框会仅有一个’确定’按钮
- 在 iOS 上你可以指定任意数量的按钮。每个按钮还都可以指定自己的样式,此外还可以指定提示的类别
- 在 Android 上
- 最多能指定三个按钮,这三个按钮分别具有“中间态”、“消极态”和“积极态”的概念:
- 如果你只指定一个按钮,则它具有“积极态”的属性(比如“确定”);两个按钮,则分别是“消极态”和“积极态”(比如“取消”和“确定”);三个按钮则意味着“中间态”、“消极态”和“积极态”(比如“稍候再说”,“取消”,“确定”)
- 默认情况下点击提示框的外面会自动取消提示框
{ onDismiss: () => {} } { cancelable: false }
alert()
// 显示弹窗的方法
static alert(title, message?, buttons?, options?, type?)
// 显示弹窗
_shwoAlert() {
Alert.alert(
'标题',
'弹窗提示信息',
[
{text: '稍后再说', onPress: () => console.log('稍后再说'), style: 'default'},
{text: '取消', onPress: () => console.log('取消'), style: 'cancel'},
{text: '确定', onPress: () => console.log('确定'), style: 'destructive'}
],
{ cancelable: false }
)
}
按钮样式
value |
说明 |
|---|---|
default |
默认 |
cancel |
取消样式 |
destructive |
红色确定样式 |
BackHandler
-
Android:监听后退按钮事件。如果没有添加任何监听函数,或者所有的监听函数都返回false,则会执行默认行为,退出应用 -
tvOS(即Apple TV机顶盒):监听遥控器上的后退按钮事件(阻止应用退出的功能尚未实现) -
iOS:尚无作用 - 注意: 监听函数是按倒序的顺序执行(即后添加的函数先执行)。如果某一个函数返回 true,则后续的函数都不会被调用
componentDidMount() {
// 添加监听
BackHandler.addEventListener('hardwareBackPress', this.handleBackPress);
}
componentWillUnmount() {
// 移除监听
BackHandler.removeEventListener('hardwareBackPress', this.handleBackPress);
}
handleBackPress = () => {
this.goBack();
return true;
}
// 退出当前应用
static exitApp()
Clipboard
Clipboard 组件可以在 iOS 和 Android 的剪贴板中读写内容
static getString()
// 获取剪贴板的文本内容。返回一个Promise,然后你可以用下面的方式来读取剪贴板内容。
async _getContent() {
var content = await Clipboard.getString();
}
static setString(content)
// 设置剪贴板的文本内容,然后你可以用下面的方式来设置剪贴板内容。
_setContent() {
Clipboard.setString('hello world');
}
InteractionManager
-
InteractionManager可以将一些耗时较长的工作安排到所有互动或动画完成之后再进行。这样可以保证JavaScript动画的流畅运行。比如Navigator的转场动画 - 对大多数
React Native应用来说,业务逻辑是运行在JavaScript线程上的。这是React应用所在的线程,也是发生API调用,以及处理触摸事件等操作的线程 - 如果你正在
JavaScript线程处理一个跨越多个帧的工作,你可能会注意到TouchableOpacity的响应被延迟了。这是因为JavaScript线程太忙了,不能够处理主线程发送过来的原始触摸事件
属性方法
// 静态方法,在用户交互和动画结束以后执行任务, 返回一个可取消的 promise runAfterInteractions(task) // 静态方法,创建一个句柄(处理器),通知管理器,某个动画或者交互开始了 createInteractionHandle() // 静态方法,进行清除句柄,通知管理器,某个动画或者交互结束了。 clearInteractionHandle(handler:Handle) // 设置延迟时间,该会调用setTimeout方法挂起并且阻塞所有没有完成的任务,然后在eventLoopRunningTime到设定的延迟时间后,然后执行setImmediate方法进行批量执行任务 setDeadline(deadline:number) // 事件 Events:CallExpression // 监听 addListener:CallExpression
这里最常使用的就是 runAfterInteractions 方法
InteractionManager.runAfterInteractions(() => {
navigator.push({
component: MainPager,
name: 'MainPager'
})
})
// 或者设置state
componentDidMount() {
InteractionManager.runAfterInteractions(() => {
this.setState({renderPlaceholderOnly: false});
});
}
Keyboard
Keyboard
相关方法
//用来加载一个指定事件的事件监听器 static addListener(eventName, callback) //移除某个类型事件的监听函数 static removeListener(eventName, callback) //移除某个类型事件的所有监听函数 static removeAllListeners(eventName) //把弹出的键盘收回去,同时使当前的文本框失去焦点 static dismiss()
eventName
上述函数中的 eventName 可以是如下值
-
keyboardWillShow:软键盘将要显示 -
keyboardDidShow:软键盘显示完毕 -
keyboardWillHide:软键盘将要收起 -
keyboardDidHide:软键盘收起完毕 -
keyboardWillChangeFrame:软件盘的frame将要改变 -
keyboardDidChangeFrame:软件盘的frame改变完毕
event 参数值
所有的键盘事件处理函数都能收到一个 event 参数,不过在不同平台下 event 参数可以取到的值不太一样
Android平台
event.endCoordinates.screenX event.endCoordinates.screenY event.endCoordinates.width event.endCoordinates.height
iOS平台
-
event.easing:这个值始终是keyboard -
evnet.duration:记录软键盘弹出动画的持续事件,单位是毫秒 -
event.startCoordinates.screenX -
event.startCoordinates.screenY -
event.startCoordinates.width -
event.startCoordinates.height -
event.endCoordinates.screenX -
event.endCoordinates.screenY -
event.endCoordinates.width -
event.endCoordinates.height
componentWillMount() {
// 监听键盘弹出时间
this.keyboardShow = Keyboard.addListener('keyboardWillShow', this._keyboardDidShow)
}
componentWillUnmount() {
this.keyboardShow.remove()
}
_keyboardDidShow = (event) => {
console.log(event)
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- React 组件模式-有状态组件 x 无状态组件、容器组件 x 展示组件、高阶组件 x 渲染回调(函数作为子组件)
- Serverless 组件开发尝试:全局变量组件和单独部署组件
- angular自定义组件-UI组件篇-switch组件
- React Hooks 源码解析(一):类组件、函数组件、纯组件
- Vue动态组件和异步组件
- Vue 动态组件 & 异步组件原理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
做自己:鬼脚七自媒体第一季
鬼脚七 / 电子工业出版社 / 2013-7 / 77.00元
当我们习惯了在社会上带着面具的时候,真实成为了一件奢侈的事情。 做到足够真实,让自己的本性表达出来,这需要勇敢。本书是鬼脚七自媒体的原创文集,主题就是做自己。本书有关于生活、互联网、自媒体的睿智分享,也有关于淘宝、搜索的独到见解,是一本接地气,文艺范,并充满正能量的电商生活书。 本书最适合淘宝卖家、电子商务人群、希望了解电商和互联网的人群阅读,也推荐热爱生活的70、80、90后阅读。一起来看看 《做自己:鬼脚七自媒体第一季》 这本书的介绍吧!