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 相关文章推荐
JavaScript 版本自动生成文章摘要
Jul 23 Javascript
js中查找最近的共有祖先元素的实现代码
Dec 30 Javascript
JS定时刷新页面及跳转页面的方法
Jul 04 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
Mar 05 Javascript
深入理解JS addLoadEvent函数
May 20 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
Nov 05 Javascript
全面总结Javascript对数组对象的各种操作
Jan 22 Javascript
Javascript实现登录记住用户名和密码功能
Mar 22 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
Jun 26 jQuery
Vue实现购物车场景下的应用
Nov 27 Javascript
Mint UI组件库CheckList使用及踩坑总结
Dec 20 Javascript
简单了解Javscript中兄弟ifream的方法调用
Jun 17 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递归调用的小技巧讲解
2013/02/19 PHP
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
遍历json 对象的属性并且动态添加属性的实现
2016/12/02 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
2019/04/08 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
Python编程修改MP3文件名称的方法
2017/04/19 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
python 中split 和 strip的实例详解
2017/07/12 Python
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
Python中最大递归深度值的探讨
2019/03/05 Python
多个python文件调用logging模块报错误
2020/02/12 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
2020/06/10 Python
Python如何爬取51cto数据并存入MySQL
2020/08/25 Python
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
方法名是否可以与构造器的名字相同
2012/06/04 面试题
存储过程和函数的区别
2013/05/28 面试题
高中英语演讲稿范文
2014/04/24 职场文书
药店促销活动策划方案
2014/08/24 职场文书
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
中考学习决心书
2015/02/04 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS