前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >React组件内事件传参 实现tab切换

React组件内事件传参 实现tab切换

作者头像
zhaoolee
发布于 2018-07-05 02:40:17
发布于 2018-07-05 02:40:17
1.3K00
代码可运行
举报
文章被收录于专栏:木子昭的博客木子昭的博客
运行总次数:0
代码可运行
  • 组件内默认onClick事件触发函数actionClick, 是不带参数的,
  • 不带参数的写法: 如onClick= { actionItem }
  • 带参数的写法, onClick = { this.activateButton.bind(this, 0) }

下面是一个向组件内函数传递参数的小例子

  • 需求: 在页面的底部, 有四个按钮, 负责切换内容, 当按钮被点击时, 变为激活状态, 其余按钮恢复到未激活状态
  • 分析: 我们首先要创建点击事件的处理函数, 当按钮被点击时, 将按钮的id作为参数发送给处理函数, 处理函数激活对应当前id的按钮, 并将其余三个按钮调整到未激活状态
  • 实现: 用组件state创建一个含有四个元素的一维数组, 四个元素默认为零, 但界面中某个按钮被点击时, 组件内处理函数将一维数组内对应元素变为1, 其它元素变为0

效果演示:

  • 核心代码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'babel-polyfill';
import React from 'react';
import ReactDOM from 'react-dom';
import './index.scss'

class TabButton extends React.Component {

        constructor(props) {
            super(props);
            this.state = {
                markArray: [0, 0, 0, 0], 
                itemClassName:'tab-button-item'
            };
            this.activateButton = this.activateButton.bind(this);
        }

        // 根据参数id, 来确定激活四个item中的哪一个
        activateButton(id) {
            let tmpMarkArray = [0, 0, 0, 0]
            tmpMarkArray[id] = 1;
            this.setState({markArray: tmpMarkArray});
        }

        render() {
            return ( 

                <div className = "tab-button" >

                <div className = {(this.state.markArray)[0] ? "tab-button-item-active" : "tab-button-item" } onClick = { this.activateButton.bind(this, 0) } ></div> 
                <div className = {(this.state.markArray)[1] ? "tab-button-item-active" : "tab-button-item" } onClick = { this.activateButton.bind(this, 1) } ></div> 
                <div className = {(this.state.markArray)[2] ? "tab-button-item-active" : "tab-button-item" } onClick = { this.activateButton.bind(this, 2) } ></div> 
                <div className = {(this.state.markArray)[3] ? "tab-button-item-active" : "tab-button-item" } onClick = { this.activateButton.bind(this, 3) } ></div>

                </div>)
            }

        }

        ReactDOM.render( < TabButton / > , document.getElementById("root"));

小结

上面的例子也可以通过event.target.value快速实现,但这个demo的扩展性更好, 在版本迭代过程中, 我们可以传递数量更多的参数, 详尽的描述UI层当前的状态, 方便业务的扩展

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.07.04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【React】学习笔记(二)——组件的生命周期、React脚手架使用
生命周期是React中非常重要的一个部分,可以说学了React但不会生命周期 = 白学
鸡先生
2022/10/29
2.4K0
【React】学习笔记(二)——组件的生命周期、React脚手架使用
React入门六: 组件基础练习
代码优化: this.state.comments出现多次。声明个变量接收它
用户4793865
2023/01/12
3790
vue 实现tab切换
tabs是整个tab选项的容器,每个tab代表一个切换项,tab提供插槽用于展现当前tab的内容 似乎没有什么问题
切图仔
2022/09/08
2.3K0
vue 实现tab切换
一文带你梳理React面试题(2023年版本)
在react17中,只有react事件会进行批处理,原生js事件、promise,setTimeout、setInterval不会
用户10357900
2023/02/27
4.4K0
超详细的React组件设计过程-仿抖音订单组件
作为数据驱动的领导者react/vue等MVVM框架的出现,帮我们减少了工作中大量的冗余代码, 一切皆组件的思想深得人心。组件就是对一些具有相同业务场景和交互模式代码的抽象,这就需要我们对组件进行规范的封装,掌握高质量组件设计的思路和方法可以帮助我们提高日常的开发效率。笔者将会通过实战抖音订单组件详细的介绍组件的设计思路和方法,对新手特别友好,希望对前端新手们和有一定工作经验的朋友有一定帮助~
用户6256742
2024/06/28
1590
超详细的React组件设计过程-仿抖音订单组件
小结React(二):组件知多少
React 16.8中正式发布了React Hooks,主要是想解决如何复用一个有状态的组件的问题。实际上React Hooks就是一系列特殊的函数,可以让本来无状态的函数组件变成有状态的,在组件内部hook组件的状态state和lifecycle。不过在正式总结React Hooks前,有必要搞清楚一些比较基本的问题,例如:什么是组件,什么是有状态组件和无状态组件,它们各自有什么特点,如何创建组件。本文根据这一思路将梳理关于React组件的基本内容,具体包括:
前端林子
2019/04/20
2.7K0
小结React(二):组件知多少
React 初学实现 异步获取表格数据列表展示,点击事件(传参)实例
初涉传说中的 【React】 为了减少多种实现方式的迷惑出现 在此只展示我实际操作中使用的方式 需求:就是在 React 语法下,点击表格中的数据,进行编辑、删除操作 因为我是初学 React ,并非专业的前端开发,所以直接加载 js 文件 <!-- 加载 React --> <!-- 注意: 部署时,将 "development.js" 替换为 "production.min.js"。--> <script crossorigin src="https://unpkg.com/react@1
泥豆芽儿 MT
2022/01/06
2.3K0
React 初学实现 异步获取表格数据列表展示,点击事件(传参)实例
React 路由详解(超详细详解)
使用 Link 是会有一些问题的, 他不会显示按钮的高亮显示, 所以我使用 NavLink 来替代它
全栈程序员站长
2022/08/10
5.8K0
React 路由详解(超详细详解)
浅谈 React 组件设计
前端组件化一直是老生常谈的话题,在前面介绍 React 的时候我们已经提到过 React 的一些优势,今天则是带大家了解一下组件设计原则。
玖柒的小窝
2021/10/22
6870
react基础--1
2.发现组件是函数定义的,随后调用该函数,将返回的虚拟DOM转换为真实DOM,随后展示在页面中
切图仔
2022/09/08
7920
React父子组件传值
版权声明:原创不易,多多珍惜 https://blog.csdn.net/wonaixiaoshenshen/article/details/89221569
我乃小神神
2019/07/02
7170
从零开始使用create-react-app + react + typescript 完成一个网站
也许有人咋一看,看到这个网站有些熟悉,没错,这个网站来源于jsisweird.com/。我花了三天时间,用 create-react-app + react + typescript 重构这个网站,与网站效果不同的是,我没有加入任何的动画,并且我添加了中英文切换以及回到顶部的效果。
陈大鱼头
2021/10/09
1.7K0
从零开始使用create-react-app + react + typescript 完成一个网站
React两大组件,三大核心属性,事件处理和函数柯里化
3.我们编码时基本只需要操作react的虚拟DOM相关数据, react会转换为真实DOM变化而更新界。
大忽悠爱学习
2021/11/15
3.1K0
React父子组件传值
文章目录 写在前面 示例图1 示例图2 功能描述 代码实现 注意的点⚠️ 写在前面 今天我们记录一下react的父子组件的传值,用到的还是比较多的,我们做一个简单的demo进行说明 示例图1 没有数据的情况下显示形式 示例图2 有数据的情况显示形式 功能描述 首先启动以后进入没有数据的view,然后我们输入任意字符,进行添加,会在下面NoData区域进行显示,鼠标放置上面的时候提示删除该项,鼠标点击,进行该项的删除!这里的两个组件分别是父组件包括input和button,子组件负责进行渲
何处锦绣不灰堆
2022/05/09
6650
React父子组件传值
「React 进阶」 React 全部 Hooks 使用大全 (包含 React v18 版本 )
React hooks是react16.8 以后,react新增的钩子API,目的是增加代码的可复用性,逻辑性,弥补无状态组件没有生命周期,没有数据管理状态state的缺陷。本章节笔者将介绍目前 React 提供的所有 hooks ,介绍其功能类型和基本使用方法。
用户6835371
2022/09/21
3.3K0
「React 进阶」 React 全部 Hooks 使用大全 (包含 React v18 版本 )
【React】组件&事件
在components文件夹下,创建函数组件hello.js,类组件home.js,
且陶陶
2023/04/12
9610
【React】组件&事件
React 开发要知道的 34 个技巧
原理:子组件里面利用 props 获取父组件方法直接调用,从而改变父组件的值 注意: 此方法和 props 大同小异,都是 props 的应用,所以在源码中没有举例
前端老王
2020/09/23
1.5K0
React基础(7)-React中的事件处理
props与state都是用于组件存储数据的一js对象,前者是对外暴露数据接口,后者是对内组件的状态,它们决定了UI界面显示形态,而若想要用户与界面有些交互动作
itclanCoder
2019/12/10
8.6K0
React基础(7)-React中的事件处理
react新手demo——TodoList
今天我们就使用 react 来实现一个简易版的 todolist ,我们可以使用这个 demo 进行 list 的增删改差,实际效果如上图所示。大家可以clone下来查看:react-todolist
庞小明
2020/02/18
1.1K0
react新手demo——TodoList
React 组件优化方案
如果你知道在什么情况下你的组件不需要更新,你可以在 shouldComponentUpdate 中返回 false 来跳过整个渲染过程。其包括该组件的 render 调用以及之后的操作。该方法会在 重新渲染前 被触发,其默认实现总是返回 true。
多云转晴
2020/02/17
3.3K0
相关推荐
【React】学习笔记(二)——组件的生命周期、React脚手架使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验