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在IE和Firefox浏览器下的7个差异兼容写法小结
Jun 18 Javascript
JavaScript为对象原型prototype添加属性的两种方式
Aug 01 Javascript
javascript创建数组之联合数组的使用方法示例
Dec 26 Javascript
SeaJS 与 RequireJS 的差异对比
Dec 08 Javascript
js实现图片轮播效果
Dec 19 Javascript
JS简单实现String转Date的方法
Mar 02 Javascript
bootstrap table配置参数例子
Jan 05 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
Mar 15 Javascript
AngularJS 仿微信图片手势缩放的实例
Sep 28 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
Nov 01 jQuery
如何用JS实现网页瀑布流布局
Apr 24 Javascript
小程序wx.getUserProfile接口的具体使用
Jun 02 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 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
php判断linux下程序问题实例
2015/07/09 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
PHP fopen函数用法实例讲解
2019/02/15 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
laravel通用化的CURD的实现
2019/12/13 PHP
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
Jquery遍历select option和添加移除option的实现方法
2016/08/26 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
2018/07/31 jQuery
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
python聊天程序实例代码分享
2013/11/18 Python
使用Python生成随机密码的示例分享
2016/02/18 Python
python并发2之使用asyncio处理并发
2017/12/21 Python
Django组件content-type使用方法详解
2019/07/19 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
使用HTML5 Canvas API控制字体的显示与渲染的方法
2016/03/24 HTML / CSS
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
如何写一份好的自荐信
2014/01/02 职场文书
家电业务员岗位职责
2014/03/10 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
军事博物馆观后感
2015/06/05 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
js不常见操作运算符总结
2021/11/20 Javascript