加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

react-native – 在React Native中长按打开上下文菜单

发布时间:2020-12-15 20:16:45 所属栏目:百科 来源:网络整理
导读:我希望使用React Native在长按不同位置触发上下文菜单. 即在像默认的dailer这样的拨号器中.您可以长按任何联系人并获得“拷贝号”菜单.而且,一旦打开“联系卡”,您就可以长按该人的姓名. 直接的方式需要大量的复制粘贴样板,包括组件和处理程序. 这样做有更好
我希望使用React Native在长按不同位置触发上下文菜单.

即在像默认的dailer这样的拨号器中.您可以长按任何联系人并获得“拷贝号”菜单.而且,一旦打开“联系卡”,您就可以长按该人的姓名.

直接的方式需要大量的复制粘贴样板,包括组件和处理程序.

这样做有更好的模式吗?

解决方法

所有可触摸组件(TouchableWithoutFeedback,TouchableOpacity等)都有一个名为 onLongPress的属性.您可以使用此prop来收听长按,然后显示上下文菜单.

为了消除代码混乱并进行大量复制粘贴,您可以将上下文菜单分离为不同的组件,并在长按时将其调用.您还可以使用ActionSheet库来显示所需的选项. React native有一个名为ActionSheetIOS的iOS原生API.如果你在react和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>
    );
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读