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 Validation插件防止重复提交表单的解决方法
Mar 05 Javascript
Javascript常考语句107条收集
Mar 09 Javascript
判断在css加载完毕后执行后续代码示例
Sep 03 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
Aug 31 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
Nov 18 Javascript
JavaScript的设计模式经典之建造者模式
Feb 24 Javascript
浅谈JavaScript for循环 闭包
Jun 22 Javascript
js创建数组的简单方法
Jul 27 Javascript
bootstrap flask登录页面编写实例
Nov 01 Javascript
JavaScript实现前端分页控件
Apr 19 Javascript
一步步教你利用Canvas对图片进行处理
Sep 19 Javascript
基于vue2.0的活动倒计时组件countdown(附源码下载)
Oct 09 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
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
PHP安全技术之 实现php基本安全
2010/09/04 PHP
php高级编程-函数-郑阿奇
2011/07/04 PHP
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
解析如何屏蔽php中的phpinfo()函数
2013/06/06 PHP
PHP的引用详解
2015/02/22 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
window.location和document.location的区别分析
2008/12/23 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
jQuery获取多种input值的简单实现方法
2016/06/20 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
Python实现的简单发送邮件脚本分享
2014/11/07 Python
python读取word文档的方法
2015/05/09 Python
详解Python中的from..import绝对导入语句
2016/06/21 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
python 代码运行时间获取方式详解
2020/09/18 Python
行政管理人员精品工作推荐信
2013/11/04 职场文书
应聘美工求职信
2013/11/07 职场文书
五年级英语教学反思
2014/01/31 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
深入理解python协程
2021/06/15 Python
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang