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为table动态添加行的实现代码
Mar 30 Javascript
JavaScript面向对象之Prototypes和继承
Jul 12 Javascript
js实现简单的星级选择器提交效果适用于评论等
Oct 18 Javascript
基于jquery插件实现常见的幻灯片效果
Nov 01 Javascript
探讨jQuery的ajax使用场景(c#)
Dec 03 Javascript
jquery实现checkbox全选全不选的简单实例
Dec 31 Javascript
jquery自适应布局的简单实例
May 28 Javascript
js对象浅拷贝和深拷贝详解
Sep 05 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
Dec 27 Javascript
浅谈webpack 构建性能优化策略小结
Jun 13 Javascript
layer.confirm取消按钮绑定事件的方法
Aug 17 Javascript
json前后端数据交互相关代码
Sep 19 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之数据库操作详解及乱码解决!
2007/01/02 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
JQuery 常用操作代码
2010/03/14 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
JS cookie中文乱码解决方法
2014/01/28 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
vue组件父与子通信详解(一)
2017/11/07 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
Python数据库的连接实现方法与注意事项
2016/02/27 Python
python音频处理用到的操作的示例代码
2017/10/27 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
python requests 库请求带有文件参数的接口实例
2019/01/03 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
HTML5中的websocket实现直播功能
2018/05/21 HTML / CSS
Html5自定义字体解决方法
2019/10/09 HTML / CSS
优秀的毕业生的自我评价
2013/12/12 职场文书
文明好少年事迹材料
2014/08/19 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
女性健康知识讲座主持词
2015/07/04 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis
使用refresh_token实现无感刷新页面
2022/04/26 Javascript
python神经网络Xception模型
2022/05/06 Python