React Native触摸点击按钮详解 Touchable系列组件使用详解

  • TouchableWithoutFeedback:响应用户的点击事件,如果你想在处理点击事件的同时不显示任何视觉反馈,使用它是个不错的选择。

  • TouchableHighlight:在TouchableWithoutFeedback的基础上添加了当按下时背景会变暗的效果。(TouchableHighlight 只支持一个子节点(不能没有子节点也不能多于一个)。如果你希望包含多个子组件,可以用一个 View 来包装它们。)

  • TouchableOpacity:相比TouchableHighlight在按下去会使背景变暗的效果,TouchableOpacity会在用户手指按下时降低按钮的透明度,而不会改变背景的颜色。

  • TouchableNativeFeedback:在Android上还可以使用,它会在用户手指按下时形成类似水波纹的视觉效果。注意,此组件只支持Android。

  • 代码测试如下,触摸点击,数字加1

import React, { Component } from 'react'
import { View,Text,StyleSheet,Button,FlatList,TouchableHighlight} from 'react-native'

export default class App3 extends Component {
    constructor(props){
        super(props)
        this.state={num:1}
        this.onclick=this.onclick.bind(this)
    }

    onclick(){
        this.setState({num:this.state.num+1})
    }
  render() {
    return (
        <View>
            <TouchableHighlight style={styles.container} onPress={this.onclick} underlayColor={"red"} activeOpacity={0.1}>
             {/*activeOpacity:指定封装的视图在被触摸操作激活时以多少不透明度显示(0 到 1 之间,默认值为 0.85)。需要设置 underlayColor:点击按下的颜色值。 */}
             {/*如果有多个组件,用需要view包裹 */}
                <View><Text>点击</Text></View>
            </TouchableHighlight>
            <TouchableOpacity style={styles.touch2} onPress={this.onclick}  activeOpacity={0.8}>
                {/* activeOpacity:透明度  此组件与 TouchableHighlight 的区别在于并没有额外的颜色变化,更适于一般场景 */}
                <Text>测试点击</Text>
            </TouchableOpacity>
            <Text>数字{this.state.num}</Text>
        </View>
    )
  }
}
const styles=StyleSheet.create({
    container:{
        height:30,
        backgroundColor:"pink",
        justifyContent:"center",
        alignItems:"center",
    },
    touch2:{
        height:30,
        backgroundColor:"#ccc",
        justifyContent:"center",
        alignItems:"center",
    }
})
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现子组件点击按钮关闭父组件的功能,可以通过以下步骤进行操作: 1. 在父组件创建一个状态变量,用于控制是否关闭父组件。例如,可以使用 `useState` 钩子来定义一个名为 `isOpen` 的状态变量,并将其初始值设置为 `true`。 2. 在父组件创建一个函数,用于更新 `isOpen` 状态变量的值。例如,可以使用 `setIsOpen` 函数来更新 `isOpen` 的值。 3. 将更新 `isOpen` 状态的函数作为属性传递给子组件。 4. 在子组件,通过 props 接收父组件传递的更新函数。 5. 在子组件,当点击按钮,调用父组件传递的更新函数来关闭父组件。 下面是一个简单的示例代码: 父组件: ```jsx import React, { useState } from 'react'; const ParentComponent = () => { const [isOpen, setIsOpen] = useState(true); const handleClose = () => { setIsOpen(false); }; return ( <div> {isOpen && ( <div> <h1>Parent Component</h1> <button onClick={handleClose}>Close Parent</button> </div> )} </div> ); }; export default ParentComponent; ``` 子组件: ```jsx import React from 'react'; const ChildComponent = ({ handleClose }) => { return ( <div> <h2>Child Component</h2> <button onClick={handleClose}>Close Parent</button> </div> ); }; export default ChildComponent; ``` 在父组件,我们定义了 `isOpen` 状态变量和 `handleClose` 函数。在渲染,我们根据 `isOpen` 的值来决定是否渲染父组件的内容。子组件,我们接收了 `handleClose` 函数作为属性,并在按钮的点击事件调用它。 这样,当点击组件的按钮,会调用父组件传递的关闭函数,从而关闭父组件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AaVictory.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值