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的一行代码轻松实现拖动效果
Dec 28 Javascript
js读写json文件实例代码
Oct 21 Javascript
JS实现5秒钟自动封锁div层的方法
Feb 20 Javascript
javascript结合Canvas 实现简易的圆形时钟
Mar 11 Javascript
基于javascript实现句子翻牌网页版小游戏
Mar 23 Javascript
jQuery快速高效制作网页交互特效
Feb 24 Javascript
微信小程序 支付功能实现PHP实例详解
May 12 Javascript
ReactNative短信验证码倒计时控件的实现代码
Jul 20 Javascript
JS实现匀加速与匀减速运动的方法示例
Sep 04 Javascript
微信小程序实现判断是分享到群还是个人功能示例
May 03 Javascript
Angular8 Http拦截器简单使用教程
Aug 20 Javascript
对vue中的事件穿透与禁止穿透实例详解
Oct 28 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/01/08 PHP
PHP实现搜索相似图片
2015/09/22 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
PHP explode()函数用法讲解
2019/02/15 PHP
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
javascript的几种写法总结
2016/09/30 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
使用Python开发windows GUI程序入门实例
2014/10/23 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
Python selenium 三种等待方式解读
2016/09/15 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
python 日志增量抓取实现方法
2018/04/28 Python
python numpy数组复制使用实例解析
2020/01/10 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
FLIR美国官网:热成像, 夜视和红外摄像系统
2018/07/13 全球购物
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
几道数据库的概念性面试题
2014/05/30 面试题
幼儿园开学家长寄语
2014/01/19 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
妇产科护理心得体会
2016/01/22 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
2022/04/14 Python