📅  最后修改于: 2023-12-03 15:08:46.888000             🧑  作者: Mango
在 React Native 中,我们可以使用内置的 CheckBox 组件来对用户输入进行控制。但它有些限制,它的样式不能自定义。在这篇文章中,我们将介绍如何创建一个自定义的 CheckBox 组件。
import React from 'react';
import { StyleSheet, TouchableOpacity, View, Text } from 'react-native';
import { Ionicons } from '@expo/vector-icons';
我们将使用 TouchableOpacity 包装自定义的复选框,并使用 Text 组件来显示文本。我们还将使用 React Native Elements 库中的 Ionicons 组件来显示检查和未检查的 Icon。
const CheckBox = ({ label, checked, onPress }) => {
return (
<TouchableOpacity style={styles.container} onPress={onPress}>
{checked ? (
<Ionicons name="checkbox-outline" size={20} color="green" />
) : (
<Ionicons name="square-outline" size={20} color="black" />
)}
<Text style={styles.label}>{label}</Text>
</TouchableOpacity>
);
};
我们创建一个函数式组件作为自定义 CheckBox 组件,它接受三个 props:
在 TouchableOpacity 组件中,我们使用 onPress prop 来传递给我们的回调函数。我们还使用了条件渲染,用 Ionicons 组件显示选中和未选中状态的 Icon。
const styles = StyleSheet.create({
container: {
flexDirection: 'row',
alignItems: 'center',
},
label: {
marginLeft: 8,
fontSize: 16,
},
});
在此示例中,我们使用了 flex 布局,使文本和图标水平居中对齐。我们还使用了 marginLeft 样式来确保文本标签在图标的右侧显示。
import React, { useState } from 'react';
import { View } from 'react-native';
import CheckBox from './components/CheckBox';
export default function App() {
const [isChecked, setIsChecked] = useState(false);
const handlePress = () => {
setIsChecked(!isChecked);
};
return (
<View style={styles.container}>
<CheckBox
label="我同意条款和条件"
checked={isChecked}
onPress={handlePress}
/>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
});
现在,我们可以在我们的应用中使用自定义 CheckBox 组件了。我们使用 useState hook 来管理 CheckBox 的状态,并将其传递给自定义组件以呈现正确的图标。我们还传递了一个回调函数,以跟踪用户是否选择了复选框。
现在,您已经了解了如何在 React Native 中创建自定义 CheckBox 组件。自定义组件可以让我们更好地控制我们的 UI,并使我们的应用程序更具可读性。现在,你可以尝试在你的应用程序中使用这个自定义组件来控制用户输入。