我是react native的新手,我正在尝试用复选标记进行文本选择,并且只选择一个文本元素,我必须使用按钮吗?
React代码
<View style={styles.mainContainer}>
<Text style={styles.title}>User Role</Text>
<View style={styles.detailsContainer}>
<View style={styles.rowContainer}>
<Text style={styles.row}>Admin</Text>
</View>
<View style={styles.rowContainer}>
<Text style={styles.row}>Assistant</Text>
</View>
</View>
</View>样式表
mainContainer: {
marginTop: 20,
},
detailsContainer: {
backgroundColor: '#FFF',
marginTop: 10,
},
title: {
paddingLeft: 16,
color: '#979797',
textTransform: 'uppercase',
},发布于 2019-04-11 22:24:47
您必须使用来自react-native的TouchableOpacity和来自react-native-elements的图标,然后执行此操作。
<View style={styles.mainContainer}>
<Text style={styles.title}>User Role</Text>
<View style={styles.detailsContainer}>
<TouchableOpacity
style={styles.rowContainer}
onPress={() => {
this.setState({ adminIsChecked: true, assistantIsChecked: false });
}}
>
<View style={{ flexDirection: 'row' }}>
<Text style={styles.row}>Admin</Text>
{this.state.adminIsChecked ?
(<Icon name='check' />)
:
(null)
}
</View>
</TouchableOpacity>
<TouchableOpacity
style={styles.rowContainer}
onPress={() => {
this.setState({ assistantIsChecked: true, adminIsChecked: false });
}}
>
<View style={{ flexDirection: 'row' }}>
<Text style={styles.row}>Assistant</Text>
{this.state.assistantIsChecked ?
(<Icon name='check' />)
:
(null)
}
</View>
</TouchableOpacity>
</View>
</View>可触摸项的onPress()在按下它们时会收到一个触发器,从而触发您在中定义的功能。
如果状态为checked,我们将选中一项,在调用onPress时使其处于选中状态,显然,取消选中另一项。
为了使用更改应用程序的状态,我们使用this.setState()和来获取状态this.state。如果你对状态感到迷惑,我建议你先阅读here。
发布于 2019-04-11 22:13:54
您需要将列表中的选定项保留为一个变量。
state = {
selectedId: null
}
renderItem({ item }) {
return (
<TouchableOpacity
onPress={() => {
this.setState({
selectedId: item.id
})
}}>
<View style={styles.mainContainer} >
<Text style={styles.title}>User Role</Text>
<View style={styles.detailsContainer}>
<View style={styles.rowContainer}>
<Text style={styles.row}>Admin</Text>
</View>
<View style={styles.rowContainer}>
<Text style={styles.row}>Assistant</Text>
</View>
</View>
{
this.state.selectedId === item.id ? <CHECK_MARK_IMAGE /> : null
}
</View>
</TouchableOpacity>
)
}我希望你把你的react原生代码放到一个方法中。
https://stackoverflow.com/questions/55634491
复制相似问题