Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过react中的特定id启用和禁用onClick()函数

通过react中的特定id启用和禁用onClick()函数
EN

Stack Overflow用户
提问于 2021-01-06 23:08:56
回答 1查看 399关注 0票数 0

我已经创建了自定义的折叠&展开切换菜单及其在视图中对应于API数据的映射。根据API,数据折叠菜单正在重复。但是,当我点击第一折叠菜单,然后第二折叠菜单也是启用,因为共同的功能。当我点击特定的折叠菜单时,我如何处理它。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        <View style={styles.section}>
          {Routes.map((o, i) =>
            o.subarr.length > 0 ? (
              <View>
                <TouchableOpacity onPress={toggleExpand}>
                  <View style={styles.section}>
                    <View style={[styles.sidebarDesign]}>
                      <View style={styles.barIcon}>
                        <Icon.SimpleLineIcons
                          name={o.icon}
                          size={heightToDp('3%')}
                          color={Color.gray}
                        />
                      </View>
                      <View style={styles.barLabel}>
                        <Text style={styles.labelStyle}>
                          {o.title.toUpperCase()}
                        </Text>
                      </View>
                      <View style={styles.barIcon}>
                        <Icon.SimpleLineIcons
                          name={expanded ? 'arrow-up' : 'arrow-down'}
                          size={heightToDp('3%')}
                          color={Color.grayDark}
                        />
                      </View>
                    </View>
                  </View>
                </TouchableOpacity>

                {o.subarr.map((r, j) => (
                  <View>
                    {expanded && (
                      <View style={[styles.sidebarDesign]}>
                        <View style={styles.barIcon}>
                          {/* <Icon.FontAwesome
                            name={r.icon}
                            size={20}
                            color={Color.gray}
                          /> */}
                        </View>
                        <View style={styles.barLabel}>
                          <Text
                            onPress={() => {
                              props.navigation.navigate(r.label);
                            }}
                            style={styles.labelStyle}>
                            {r.label.toUpperCase()}
                          </Text>
                        </View>
                        <View style={styles.barIcon}>
                          {/* <Text>icon</Text> */}
                        </View>
                      </View>
                    )}
                  </View>
                ))}
              </View>
            ) : (
              <View>
                <View style={[styles.sidebarDesign]}>
                  <View style={styles.barIcon}>
                    <Icon.SimpleLineIcons
                      name={o.icon}
                      size={heightToDp('3%')}
                      color={Color.gray}
                    />
                  </View>
                  <View style={styles.barLabel}>
                    <Text
                      onPress={() => {
                        props.navigation.navigate(o.label);
                      }}
                      style={styles.labelStyle}>
                      {o.title.toUpperCase()}
                    </Text>
                  </View>
                  <View style={styles.barIcon}>{/* <Text>icon</Text> */}</View>
                </View>
              </View>
            ),
          )}
        </View>

数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  {
    "id": 1,
    "title": "Dashboard",
    "label": "Dashboard",
    "key": "dashboard",
    "icon": "home",
    "subarr": []
  },

  {
    "id": 2,
    "title": "Pages",
    "label": "Pages",
    "key": "pages",
    "icon": "diamond",
    "subarr": [
      {
        "id": 3,
        "title": "Tabs",
        "label": "Tabs",
        "key": "tab",
        "icon": "grid"
      },

      {
        "id": 4,
        "label": "Test",
        "key": "test",
        "icon": "adn",
        "title": "Test"
      }
    ]
  },
  {
    "id": 5,
    "title": "Components",
    "key": "Components",
    "label": "component",
    "icon": "notebook",

    "subarr": [
      {
        "id": 6,
        "label": "Card",
        "key": "card",
        "icon": "i-card",
        "title": "Card"
      },
      {
        "id": 7,
        "title": "Button",
        "label": "Button",
        "key": "button",
        "icon": "control-play"
      },

      {
        "id": 8,
        "title": "Table",
        "label": "Table",
        "key": "table",
        "icon": "list"
      },
      {
        "id": 9,
        "title": "Charts",
        "label": "Chart",
        "key": "chart",
        "icon": "chart"
      }
    ]
  },

  {
    "id": 10,
    "title": "notifications",
    "label": "User",
    "key": "user",
    "icon": "bell",
    "subarr": []
  },
  {
    "id": 11,
    "title": "User profile",
    "label": "Profile",
    "key": "profile",
    "icon": "user",
    "subarr": []
  },
  {
    "id": 12,
    "title": "Carousel",
    "label": "Carousel",
    "key": "carousel",
    "icon": "layers",
    "subarr": []
  }
]```
EN

回答 1

Stack Overflow用户

发布于 2021-01-07 00:05:28

请检查这个链接

https://snack.expo.io/VYh8f9Fsp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React from "react";
import { ScrollView, View, Text, TouchableOpacity, Image } from "react-native";
import styles  from './styles'
class App extends React.Component {
  constructor(props) {
    super(props);
      this.state = {
      itemsList: [
        {
          item: "Seasons",
          route: "",
          icon: '',
          subItem: [     { name: "Special", find: "Special" },
            { name: "Season 12", find: "12" },
            { name: "Season 11", find: "12" },
            { name: "Explorer 2018", find: "2018" },
            { name: "Season 10", find: "10" },
            { name: "Season 9", find: "9" },
            { name: "Season 8", find: "8" },
            { name: "Season 7", find: "8" },],
        },
        { item: "Music Library", route: "PlayList", icon: '',  subItem: [     { name: "Special", find: "Special" },
            { name: "Season 12", find: "12" },
            { name: "Season 11", find: "12" },
            { name: "Explorer 2018", find: "2018" },
            { name: "Season 10", find: "10" },
            { name: "Season 9", find: "9" },
            { name: "Season 8", find: "8" },
            { name: "Season 7", find: "8" },], },
        { item: "Artists", route: "Artists", icon: '',  subItem: [     { name: "Special", find: "Special" },
            { name: "Season 12", find: "12" },
            { name: "Season 11", find: "12" },
            { name: "Explorer 2018", find: "2018" },
            { name: "Season 10", find: "10" },
            { name: "Season 9", find: "9" },
            { name: "Season 8", find: "8" },
            { name: "Season 7", find: "8" },], },
      ],
      currentIndex: -1,
      subIndex: 0,
    };
  }

  handelSelection = (index) => {
    var itemsList_Clone = this.state.itemsList;
    // itemsList_Clone[index]["selected"] = !itemsList_Clone[index]["selected"];
    this.setState({ currentIndex: index, itemsList: itemsList_Clone });
  };
  subItemSelection = (index, _index) => {
    this.setState({ subIndex: index + "_" + _index });
  };
  handeSubTabSelection = (item, _index, index) => {
    this.subItemSelection(index, _index);
  };
  render() {
    const { itemsList, currentIndex, subIndex } = this.state;
    return (
      <>
        <View
          style={[
            styles.container,
            styles.flex(1),
            styles.marginTop(-1),
            styles.justify_flexStart,
          ]}
        >
          <View
            style={[
              styles.menu_container,
              styles.alignItems_flexStart,
              styles.paddingHorizontal(20),
              // { fontFamily: fonts.UnityTextRegular },
              styles.menu_Row,
              styles.marginTop(10),
            ]}
          >
            
            <Text
              style={styles.menuHeading}
              // onPress={() => this.props.navigation.goBack()}
            >
              {/* Dashboard */}
             Home
            </Text>
          </View>
          <ScrollView style={[{ width: "100%" }, styles.marginTop(10)]}>
            <View style={[styles.paddingHorizontal(15)]}>
              {itemsList.map((data, index) => (
                <>
                  <TouchableOpacity
                    key={index}
                    onPress={() => {
                      // this.props.navigation.navigate(data.route),
                        this.handelSelection(index);
                    }}
                    style={[
                      styles.margin(5),
                      // styles.justify_spaceBetween,
                      styles.flex_Row,
                      styles.menu_Row,
                    ]}
                  >
                    <View>
                      <Image source={data.icon} style={styles.menuIcons} />
                    </View>
                    <View style={[styles.alignSelf_center]}>
                      <Text style={styles.menuHeading}>{data.item}</Text>
                    </View>
                    {index == currentIndex && (
                      <Text style={styles.menuHeading}>-</Text>
                    )}
                  </TouchableOpacity>
                  {index == currentIndex &&
                    data.subItem &&
                    data.subItem.map((_item, _index) => (
                      <TouchableOpacity
                        key={_index}
                        onPress={() =>
                          this.handeSubTabSelection(_item, _index, index)
                        }
                        style={[
                          styles.margin(4),
                          styles.justify_spaceBetween,
                          styles.flex_Row,
                        ]}
                      >
                        <View>
                          <Text
                            style={[
                              styles.menuHeading,
                              styles.fontSize(16),
                              styles.UnityTextMedium,
                              styles.margin(2.5),
                              styles.paddingHorizontal(5),
                              subIndex == index + "_" + _index && {
                                color: colors.themeRed,
                              },
                            ]}
                          >
                            {_item.name}
                          </Text>
                        </View>
                      </TouchableOpacity>
                    ))}
                </>
              ))}
            </View>
          </ScrollView>
        </View>
      </>
    );
  }
}
export default (App);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65608009

复制
相关文章
Linux 中如何启用和禁用网卡?
当你添加一个网卡或者从一个物理网卡创建出一个虚拟网卡的时候,你可能需要使用这些命令将新网卡启用起来。另外,如果你对网卡做了某些修改或者网卡本身没有启用,那么你也需要使用以下的某个命令将网卡启用起来。
用户4988085
2021/09/14
18.6K0
如何在Ubuntu中禁用和启用CPU内核?
在某些情况下,您可能需要在Ubuntu操作系统中禁用或启用CPU内核。禁用CPU内核可以帮助您降低功耗,提高性能或解决一些与硬件和软件兼容性相关的问题。本文将介绍如何在Ubuntu中禁用和启用CPU内核的方法。
网络技术联盟站
2023/07/14
6540
如何在Ubuntu中禁用和启用CPU内核?
如何在Ubuntu中禁用和启用CPU内核?
在某些情况下,您可能需要在Ubuntu操作系统中禁用或启用CPU内核。禁用CPU内核可以帮助您降低功耗,提高性能或解决一些与硬件和软件兼容性相关的问题。本文将介绍如何在Ubuntu中禁用和启用CPU内核的方法。
网络技术联盟站
2023/09/05
6520
如何在Ubuntu中禁用和启用CPU内核?
【jquery基础】按钮禁用和启用
在html标签中设置按钮被禁用,可以使用如下代码 <input type='button' id='test' value='disabled'> 在jquery中可以使用attr()函数修改按钮的disable属性 $(“#test”).attr(‘disabled',false); jquery 控制button的disabled属性
用户5640963
2019/07/25
4.6K0
JS中onclick函数自动执行问题
第一种写法是每次加载时,先调用clickCon方法,然后将执行结果赋给onclick,每次都会执行
西柚dzh
2022/06/09
5.7K0
react onclick传递参数
onClick={this.Mallclose.bind(this,e,index)}
windseek
2019/01/02
2.8K0
IQKeyboardManager 启用/禁用
1.在摸个界面完全禁用IQKeyboard - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; //TODO: 页面appear 禁用 [[IQKeyboardManager sharedManager] setEnable:NO]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:anim
developerbfl
2018/06/05
2.5K0
javascript中onclick(this)用法和onclick(this.value)用法介绍
2.onclick(this)代码详解 一般标签中会使用href和onclick两种方式来进行进行页面跳转或执行动作,但是小编一般都会使用onclick来进行执行Ajax函数进行跳转,并同时使用οnclick=”xxxxxx(this)”来传递动态参数:例子如下
全栈程序员站长
2022/07/08
1.8K0
JSX onClick 和 HTML onclick 的区别
在 JSX 中可以通过 onClick 这样的方式给一个元素添加一个事件处理函数,当然,在 HTML 中也可以用 onclick (小写 c),但在 HTML 中直接书写 onclick 一直就是为人垢病的写法,网页应用开发界一直倡导的是用 jQuery 的方法添加事件处理函数,直接写 onclick 会带来代码混乱的问题。
Leophen
2021/07/08
1.8K0
在 Linux 上为特定的用户或用户组启用或禁用 SSH
由于你的公司标准规定,你可能只能允许部分人访问 Linux 系统。或者你可能只能够允许几个用户组中的用户访问 Linux 系统。那么如何实现这样的要求呢?最好的方法是什么呢?如何使用一个简单的方法去实现呢?
用户9104802
2021/11/22
2.6K0
Vbs 禁用启用网卡
在实际工作中,经常碰到需要通过脚本启用禁用网卡的情况,在网上找了一个脚本,实际是通过模拟键盘操作来启用禁用,但对于多种系统和比较复杂的情况操作性不好。
力哥聊运维与云计算
2019/06/28
2K0
python中的id( )函数
>>> a=2.0 >>> b=2.0 >>> id(a) 524440880 >>> id(b) 524440904 >>> a=2 >>> b=2 >>> id(a) 524425104 >>> id(b)524425104为什么上面输出的值有些一样,有些不一样呢,求大神详细解释下。
用户7886150
2021/01/23
1K0
Spring boot with Schedule (启用/禁用)
本文节选自《Netkiller Java 手札》 5.19.4. 计划任务控制 matchIfMissing = true, 如果改属性条目不存在返回 true @ConditionalOnProperty("batch.metrics.export.influxdb.enabled") # mybean.enabled = true @ConditionalOnProperty(value='mybean.enabled') @ConditionalOnProperty(value = "endp
netkiller old
2018/03/05
2.8K0
button元素的id与onclick的函数名字相同 导致方法失效的问题
需求需要在原先页面添加一个按钮,触发一个function,如此简单的操作,却无意间发现了一个问题。(还是对html了解的太少)
陈灬大灬海
2019/01/28
1.7K0
button元素的id与onclick的函数名字相同 导致方法失效的问题
Oracle 启用被禁用的外键
在Oracle中,面对已经被禁用的外键,我们该如何将它重新启用呢?本教程就为大家带来Oracle外键启用方法。
用户8965210
2021/09/02
8300
React报错之Expected `onClick` listener to be a function
当我们为元素的onClick属性传递一个值,但是该值却不是函数时,会产生"Expected onClick listener to be a function"报错。为了解决该报错,请确保只为元素的onClick属性传递函数。
chuckQu
2022/08/19
1.1K0
React报错之Expected `onClick` listener to be a function
点击加载更多

相似问题

禁用/启用Jquery onClick函数

11

启用和禁用onclick功能

23

使用onclick事件禁用和重新启用javascript函数

22

如何启用和禁用onclick事件

10

按钮禁用/启用onclick

42
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文