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 相关文章推荐
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
Jun 26 Javascript
javascript 触发事件列表 比较不错
Sep 03 Javascript
学习Bootstrap组件之下拉菜单
Jul 28 Javascript
javascript对象的创建和访问
Mar 08 Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
Nov 07 Javascript
vue-cli的webpack模板项目配置文件分析
Apr 01 Javascript
利用Vue.js实现求职在线之职位查询功能
Jul 03 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
Aug 16 Javascript
angular 组件通信的几种实现方式
Jul 13 Javascript
Vue实现表格中对数据进行转换、处理的方法
Sep 06 Javascript
javascript将16进制的字符串转换为10进制整数hex
Mar 05 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
农民C键的运用技巧
2020/03/04 星际争霸
PHP定时自动生成静态HTML的实现代码
2010/06/20 PHP
php根据年月获取季度的方法
2014/03/31 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
2017/03/04 PHP
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
jquery.validate分组验证代码
2011/03/17 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
javascript实现时钟动画
2020/12/03 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
python实现文件的分割与合并
2019/08/29 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
Python集合操作方法详解
2020/02/09 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
爱国主义教育活动总结
2014/05/07 职场文书
教室标语大全
2014/06/21 职场文书
党支部创先争优承诺书
2014/08/30 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
班委竞选稿范文
2015/11/21 职场文书
SQL注入详解及防范方法
2021/12/06 MySQL
Java实现学生管理系统(IO版)
2022/02/24 Java/Android