react-native – 在React Native中长按打开上下文菜单
发布时间:2020-12-15 20:16:45 所属栏目:百科 来源:网络整理
导读:我希望使用React Native在长按不同位置触发上下文菜单. 即在像默认的dailer这样的拨号器中.您可以长按任何联系人并获得“拷贝号”菜单.而且,一旦打开“联系卡”,您就可以长按该人的姓名. 直接的方式需要大量的复制粘贴样板,包括组件和处理程序. 这样做有更好
我希望使用React Native在长按不同位置触发上下文菜单.
即在像默认的dailer这样的拨号器中.您可以长按任何联系人并获得“拷贝号”菜单.而且,一旦打开“联系卡”,您就可以长按该人的姓名. 直接的方式需要大量的复制粘贴样板,包括组件和处理程序. 这样做有更好的模式吗? 解决方法
所有可触摸组件(TouchableWithoutFeedback,TouchableOpacity等)都有一个名为
onLongPress 的属性.您可以使用此prop来收听长按,然后显示上下文菜单.
为了消除代码混乱并进行大量复制粘贴,您可以将上下文菜单分离为不同的组件,并在长按时将其调用.您还可以使用ActionSheet库来显示所需的选项. React native有一个名为 // file/that/contains/globally/used/functions.js const openContextMenu = (event,user,callback) => { ActionSheetIOS.showActionSheetWithOptions({ options: ['Copy Username','Call User','Add to favorites','Cancel'],cancelButtonIndex: [3],title: 'Hey',message : 'What do you want to do now?' },(buttonIndexThatSelected) => { // Do something with result if(callback && typeof callback === 'function') callback(); }); }; export openContextMenu; import { openContextMenu } from './file/that/contains/globally/used/functions'; export default class UserCard extends React.Component { render() { const { userObject } = this.props; return( <TouchableWithoutFeedback onLongPress={(event) => openContextMenu(event,userObject,() => console.log('Done')}> <TouchableWithoutFeedback onLongPress={(event) => openContextMenu(event,() => console.log('Done'))}> <Text>{userObject.name}</Text> <Image source={{uri: userObject.profilePic }} /> </TouchableWithoutFeedback> </TouchableWithoutFeedback> ); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |