React组件内事件传参实现tab切换的示例代码


Posted in Javascript onJuly 04, 2018

本文介绍了React组件内事件传参实现tab切换的示例代码,分享给大家,具体如下:

  1. 组件内默认onClick事件触发函数actionClick, 是不带参数的,
  2. 不带参数的写法: 如onClick= { actionItem }
  3. 带参数的写法, onClick = { this.activateButton.bind(this, 0) }

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

需求: 在页面的底部, 有四个按钮, 负责切换内容, 当按钮被点击时, 变为激活状态, 其余按钮恢复到未激活状态

分析: 我们首先要创建点击事件的处理函数, 当按钮被点击时, 将按钮的id作为参数发送给处理函数, 处理函数激活对应当前id的按钮, 并将其余三个按钮调整到未激活状态

实现: 用组件state创建一个含有四个元素的一维数组, 四个元素默认为零, 但界面中某个按钮被点击时, 组件内处理函数将一维数组内对应元素变为1, 其它元素变为0

效果演示:

React组件内事件传参实现tab切换的示例代码

核心代码:

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"));

小结

React组件内事件传参实现tab切换的示例代码

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用jQuery设置disabled属性与移除disabled属性
Aug 21 Javascript
jQuery验证元素是否为空的两种常用方法
Mar 17 Javascript
js实现文本框支持加减运算的方法
Aug 19 Javascript
JavaScript中数组的合并以及排序实现示例
Oct 24 Javascript
js HTML5 Canvas绘制转盘抽奖
Sep 13 Javascript
标准的js无缝滚动效果
Aug 30 Javascript
在JavaScript中调用Java类和接口的方法
Sep 07 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
Jan 08 Javascript
jQuery学习之DOM节点的插入方法总结
Jan 22 Javascript
小程序数据通信方法大全(推荐)
Apr 15 Javascript
详解javascript void(0)
Jul 13 Javascript
JavaScript大数相加相乘的实现方法实例
Oct 18 Javascript
解决vue项目打包后提示图片文件路径错误的问题
Jul 04 #Javascript
浅谈在react中如何实现扫码枪输入
Jul 04 #Javascript
Redux实现组合计数器的示例代码
Jul 04 #Javascript
用Node编写RESTful API接口的示例代码
Jul 04 #Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
Jul 04 #Javascript
JS实现点击按钮可实现编辑功能
Jul 03 #Javascript
详解vue-cli中模拟数据的两种方法
Jul 03 #Javascript
You might like
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
2018/08/17 PHP
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
2012/12/17 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
js 函数性能比较方法
2020/08/24 Javascript
Python的Django框架中的URL配置与松耦合
2015/07/15 Python
Python 判断奇数偶数的方法
2018/12/20 Python
Python匿名函数及应用示例
2019/04/09 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
python3中sys.argv的实例用法
2020/04/24 Python
详解用 python-docx 创建浮动图片
2021/01/24 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
英格兰橄榄球商店:England Rugby Store
2016/12/17 全球购物
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
.net软件工程师面试题
2015/03/31 面试题
我的梦中国梦演讲稿
2014/04/23 职场文书
反腐倡廉警示教育活动心得体会
2014/09/04 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
复试通知单模板
2015/04/24 职场文书
运动会入场词
2015/07/18 职场文书
小学生节约用水倡议书
2019/08/12 职场文书
如何通过cmd 连接阿里云服务器
2022/04/18 Servers