如何将我自己的事件侦听器添加到我的自定义 React Native 组件中?

彼得·谢泼德

所以我使用 React Native+Expo 并且我制作了一个自定义组件,它是一个步进器。看起来像这样:在此处输入图片说明

这是它的代码:

import React, { useState } from 'react';
import { View, Text,StyleSheet, TouchableOpacity } from 'react-native';



const Stepper = (props) => {
    let counter = 0;

    const increment = () => {
        counter += 1

    }
    
    const decrement = () => {
        counter -= 1
    }

    return (

        <View style={{ ...styles.stepperStyle, ...props.containerStyle }}>
            <TouchableOpacity style={{
                backgroundColor: props.leftColor,
                flex: 1,
                alignItems: 'center',
                justifyContent: 'center',
                borderTopLeftRadius: props.radius,
                borderBottomLeftRadius: props.radius
            }}>
                <Text adjustsFontSizeToFit={true} style={{ fontSize: 40 }}>-</Text>
            </TouchableOpacity>
            <View style={{
                borderLeftWidth: 1,
                borderRightWidth: 1,
                alignItems: 'center',
                justifyContent: 'center',
                flex: 1
            }}>
                <Text style={props.labelStyle}>{props.initialValue} {props.label}</Text>
            </View>
            <TouchableOpacity style={{
                backgroundColor: props.rightColor,
                flex: 1,
                alignItems: 'center',
                justifyContent: 'center',
                borderTopRightRadius: props.radius,
                borderBottomRightRadius: props.radius
            }}>
                <Text adjustsFontSizeToFit={true}
                    style={{ fontSize: 40 }}>+</Text>
            </TouchableOpacity>
        </View>

    );

}

const styles = StyleSheet.create({
    stepperStyle: {
        backgroundColor: 'transparent',
        flexDirection: 'row',
        borderRadius: 100,
        borderWidth: 1,
        width: '100%',
        height: 42
    }

});
export default Stepper

我想要做的是制作某种事件侦听器或函数,可以在计数器值发生变化时返回它。

所以从外面看,我希望它看起来像这样:

<Stepper
   onValueChange={count => setSets(count)}
/>

我刚开始做这样的事情。我需要使用 useEffect 钩子吗?获取当前计数器值的最佳方法是什么?任何帮助,将不胜感激!

某些表演

由于看起来您希望组件内部的值与组件sets外部的有状态匹配,因此最合理的处理方法是将 thesetssetSetsdown 作为 props传递,并通过incrementand使用和调用它们decrement

<Stepper
   {...{ sets, setSets }}
/>
const Stepper = ({ sets, setSets }) => {
    const increment = () => setSets(sets + 1);
    const decrement = () => setSets(sets - 1);
    // other code that references increment and decrement and sets

如果外部状态名称可以更改,请使用

<Stepper
    counter={sets} setCounter={setSets}
/>
const Stepper = ({ counter, setCounter }) => {
    const increment = () => setCounter(counter + 1);
    const decrement = () => setCounter(counter - 1);
    // other code that references increment and decrement and counter

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将事件侦听器添加到React Native中的状态

如何将IOS 14支持添加到我的React Native应用程序中?

在我的React自定义钩子的每次调用中添加和删除事件侦听器是否太昂贵?如何避免呢?

如何在自己的文件中的React Native中正确实现自定义组件?

如何在React Native中让组件控制同级组件?

使用TypeScript在React Native中创建自定义组件

在React Native中样式化自定义组件

在React Native中向样式化组件自定义组件添加样式

React HOC-将事件侦听器添加到包装的组件中

如何将绝对位置应用于 React Native 中的自定义组件?

React Native将Text组件添加到另一个Text组件中

如何从React Native中的ScrollView组件获取onPress事件

如何在React Native中调用类组件中的hook?

如何从React Native的WebView组件中打开Safari中的链接

我可以在React Native中禁用View组件吗?

我要在 React Native 的功能组件中实现 CustomPicker

React native如何将函数中的值返回给组件

React Native中的组件异常

React Native中的条件组件

React Native中的功能组件

将字体粗细添加到react-native中的自定义添加字体中

如何在React Native的无状态功能组件中扩展Native组件的props TypeScript接口?

通过React Native中的App.js向自定义组件添加样式

在React Native中单击事件后渲染动态组件

如何在React Native中将组件正确导入到我的导航器中?

在自定义React Native / Expo音频播放器组件中启用清理功能?

在react-native中的每个样式组件周围添加边框?

在React Native中以编程方式添加组件

如何在React Native Web中访问引用的子组件?