所以我使用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挂钩吗?获取当前计数器值的最佳方法是什么?任何帮助都将不胜感激!
1条答案
按热度按时间34gzjxbg1#
因为看起来您希望组件中的值与状态匹配
sets
在组件之外,处理此问题的最合理方法是将sets
及setSets
作为道具,使用并调用这些道具increment
及decrement
.如果外部状态名称可以更改,请使用