React Native知识5-Touchable类组件

React Native 没有像web那样可以给元素绑定click事件,前面我们已经知道Text组件有onPress事件,为了给其他组件

也绑定点击事件,React Native提供了3个组件来做这件事。

1.TouchableHighlight:高亮触摸,用户点击时,会产生高亮效果。

2.TouchableOpacity:透明触摸。用户点击时,点击的组件会出现透明效果。

3.TouchableWithoutFeedback:无反馈性触摸。用户点击时无任何视觉效果。

注意:只支持一个子节点,如果你希望包含多个子组件,用一个View来包装它们。

一:TouchableHighlight

1:当手指点击按下的时候,该视图的不透明度会进行降低同时会看到相应的颜色,其实现原理则是在底层新添加了一个View。此外,TouchableHighlight只能进行一层嵌套,不能多层嵌套。

常用属性:

1.1:activeOpacity  number

设置组件在进行触摸的时候,显示的不透明度(取值在0-1之间)

1.2:onHideUnderlay  function  方法

当底层被隐藏的时候调用

1.3:onShowUnderlay  function 方法

当底层显示的时候调用

1.4:style

可以设置控件的风格演示,该风格演示可以参考View组件的style

1.5:underlayColor

当触摸或者点击控件的时候显示出的颜色

2:实例代码

import React, { Component } from ‘react‘;
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  TextInput,
  Alert,
  Image,
  TouchableHighlight
} from ‘react-native‘;

class ReactNativeProject extends Component {
  _show(text) {
    alert(text);
  }

  render() {
    return (
      <View style={styles.container}>
              <TouchableHighlight
                 onPress={this._show.bind(this,‘React Native‘)}
                 underlayColor=‘#E1F6FF‘>
                 <Text style={styles.item}>React Native</Text>
               </TouchableHighlight>

               <TouchableHighlight
                 onPress={this._show.bind(this,‘点击效果‘)}
                 underlayColor=‘#E1F6FF‘>
                 <Text style={styles.item}>点击效果</Text>
               </TouchableHighlight>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    marginTop:64
  },
  item:
  {
    fontSize:18,
    marginLeft:5,
    color:‘#434343‘
  }
});

AppRegistry.registerComponent(‘ReactNativeProject‘, () => ReactNativeProject);

效果图:

二:不透明触摸 TouchableOpacity

1:该组件封装了响应触摸事件;当点击按下的时候,该组件的透明度会降低。该组件不用设置背景色,这样使用起来更方便;

常用属性:

activeOpacity  number

设置当用户触摸的时候,组件的透明度

2:实例代码

import React, { Component } from ‘react‘;
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  TextInput,
  Alert,
  Image,
  TouchableHighlight,
  TouchableOpacity
} from ‘react-native‘;

class ReactNativeProject extends Component {
  _show(text) {
    alert(text);
  }

  render() {
    return (
      <View style={styles.container}>
              <TouchableOpacity
                 onPress={this._show.bind(this,‘React Native‘)}
                 activeOpacity={0.5}>
                 <Text style={styles.item}>React Native</Text>
               </TouchableOpacity>

               <TouchableOpacity
                 onPress={this._show.bind(this,‘点击效果‘)}
                 activeOpacity={0.9}>
                 <Text style={styles.item}>点击效果</Text>
               </TouchableOpacity>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    marginTop:64
  },
  item:
  {
    fontSize:18,
    marginLeft:5,
    color:‘#434343‘
  }
});

AppRegistry.registerComponent(‘ReactNativeProject‘, () => ReactNativeProject);

效果图:

三:TouchableWithoutFeedback 

除非你有一个很好的理由,否则不要用这个组件。所有能够响应触屏操作的元素在触屏后都应该有一个视觉上的反馈(然而本组件没有任何视觉反馈)。这也是为什么一个"web"应用总是显得不够"原生"的主要原因之一。TouchableWithoutFeedback只支持一个子节点,如果你希望包含多个子组件,用一个View来包装它们。

四:知识点

1:react native 代参bind this 的两种方式(如果不用bind,事件会在加载时马上就执行了)

第一种带参数 bind this的方式(使用箭头方法)

<TouchableOpacity
        onPress={(e) => this._needHandlderArgument(e,argument)}
        underlayColor=‘#00EE76‘>
</TouchableOpacity >
_needHandlderArgument(e, argument) {
          // 只处理argument  e用于绑定this
}

第二种带参数 bind this的方式(直接带参bind)

    <TouchableOpacity
        onPress={this._needHandlderArgument.bind(this,argument)}
        underlayColor=‘#00EE76‘>
    </TouchableOpacity >
 _needHandlderArgument(argument) {
          // 只处理argument
 }
时间: 2024-10-04 01:09:16

React Native知识5-Touchable类组件的相关文章

React Native知识

http://www.cnblogs.com/wujy/tag/React%20Native/ React Native知识12-与原生交互 React Native知识11-Props(属性)与State(状态) React Native学习笔记之2 React Native知识10-ListView组件 React Native知识9-ScrollView组件 React Native知识8-WebView组件 React Native知识7-TabBarIOS组件 React Native

Touchable类组件

Touchable /* * React Native中提供3个组件用于给其他没有触摸事件的组件,绑定触摸事件 * TouchableOpacity 透明触摸,点击时,组件会出现透明过渡的效果 * TouchableHighlight 高亮触摸,点击时,组件会出现高亮效果 * TouchableWithoutFeedback 无反馈触摸,点击时,组件无视觉变化 * * 需要导入组件 * * * */ var LessionTouchable = React.createClass({ /* 绑定

React Native知识2-Text组件

Text用于显示文本的React组件,并且它也支持嵌套.样式,以及触摸处理.在下面的例子里,嵌套的标题和正文文字会继承来自styles.baseText的fontFamily字体样式,不过标题上还附加了它自己额外的样式.标题和文本会在顶部依次堆叠,并且被代码中内嵌的换行符分隔开. 一:属性 1:allowFontScaling bool(iOS特有):控制字体是否要根据iOS的“文本大小”辅助选项来进行缩放. 2:numberOfLines number :用来当文本过长的时候裁剪文本.包括折叠

React Native知识1-FlexBox 布局内容

一:理论知识点 1:什么是FlexBox布局? 弹性盒模型(The Flexible Box Module),又叫Flexbox,意为“弹性布局”,旨在通过弹性的方式来对齐和分布容器中内容的空间,使其能适应不同屏幕,为盒装模型提供最大的灵活性. Flex布局主要思想是:让容器有能力让其子项目能够改变其宽度.高度(甚至是顺序),以最佳方式填充可用空间: 2:Flex布局基于flex-flow流 容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis).主轴的开始位

react native 使用 iOS 原生 UI 组件

目前 react native 的组件还是不多,有些也并不怎么好用,这时候就需要封装原生 UI 组件了 之前写过RN 与 native 的通信 无非就是两种: 1>>>  react native 内部事件需要通知 native 调用 native 的方法(或者传递RN 中的数据到 native),这时候可以用新建一个 manager 之类的文件 RCT_EXPORT_MOUDLE() 暴露 native类  ,RCT_EXPORT_METHOD () 暴露 native 方法给 js

【React Native开发】React Native控件之WebView组件详解以及实例使用(22)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50676379 本文出自:[江清清的博客] (一)前言 [好消息]个人网站已经上线运行,后面博客以及技术干货等精彩文章会同步更新,请大家关注收藏:http://www.lcode.org 今天我们一起来看一下WebView组件讲解以及使用实例 刚创建的React Native技术交流群(282693535),欢迎各位大牛,React Native技术爱好者加入交流!同

React Native入门(三)组件的Props(属性)和State(状态)

相关文章 React Native入门系列 前言 在Android或者iOS开发中我们会用到很多控件,这些控件会有很多的属性.样式等等.同样的,React Native中的组件也有属性.样式和状态. 1.Props(属性) 组件创建时会设置一些参数来定制这个组件,这些参数就是属性,属性一旦设定,在组件的生命周期中就不会改变.下面拿Image的source属性和Text的onPress属性作为举例. Image的source属性 import React, {Component} from 're

React Native知识9-ScrollView组件

一个包装了平台的ScrollView(滚动视图)的组件,同时还集成了触摸锁定的“响应者”系统. 记住ScrollView必须有一个确定的高度才能正常工作,因为它实际上所做的就是将一系列不确定高度的子组件装进一个确定高度的容器(通过滚动操作).要给一个ScrollView确定一个高度的话,要么直接给它设置高度(不建议),要么确定所有的父容器都已经绑定了高度.在视图栈的任意一个位置忘记使用{flex:1}都会导致错误,你可以使用元素查看器来查找问题的原因. ScrollView内部的其他响应者尚无法

React Native知识7-TabBarIOS组件

一:简介 两个TabBarIOS和TabBarIOS.Item组件可以实现页面Tab切换的功能,Tab页面切换的架构在应用开发中还是非常常见的.如:腾讯QQ,淘宝,美团外卖等等 二:TabBarIOS.Item属性 1.View相关属性样式全部继承(例如:宽和高,背景颜色,边距等相关属性样式) 2.badge string,number 在图标的右上方显示小红色气泡,显示信息 3.icon Image.propTypes.source Tab按钮自定义的图标,如果systemicon属性被定义了