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 相关文章推荐
用js实现层随着内容大小动态渐变改变 推荐
Dec 19 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
Jan 04 Javascript
JavaScript中“基本类型”之争小结
Jan 03 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
Aug 22 Javascript
简述JavaScript中正则表达式的使用方法
Jun 15 Javascript
JS实现适合于后台使用的动画折叠菜单效果
Sep 21 Javascript
Three.js学习之Lamber材质和Phong材质
Aug 04 Javascript
AngularJS 与百度地图的结合实例
Oct 20 Javascript
vue自定义指令实现v-tap插件
Nov 03 Javascript
Bootstrap中datetimepicker使用小结
Dec 28 Javascript
jQuery 筛选器简单操作示例
Oct 02 jQuery
vue项目引入ts步骤(小结)
Oct 31 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代码
2011/11/27 PHP
用php实现选择排序的解决方法
2013/05/04 PHP
php ios推送(代码)
2013/07/01 PHP
php检测iis环境是否支持htaccess的方法
2014/02/18 PHP
PHP实现微信公众平台音乐点播
2014/03/20 PHP
PHP中串行化用法示例
2016/11/16 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
2020/01/26 PHP
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
react-router中的属性详解
2017/06/01 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
Python实现全角半角转换的方法
2014/08/18 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
2018/10/11 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
django中的数据库迁移的实现
2020/03/16 Python
windows10在visual studio2019下配置使用openCV4.3.0
2020/07/14 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
大学校庆邀请函
2014/01/11 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书
Axios取消重复请求的方法实例详解
2021/06/15 Javascript
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python