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获取元素在浏览器中的绝对位置
Jul 24 Javascript
js中top/parent/frame概述及案例应用
Feb 06 Javascript
jquery中JSON的解析方式
Mar 16 Javascript
JavaScript ES6中export、import与export default的用法和区别
Mar 14 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
Apr 20 Javascript
详解JS中的attribute属性
Apr 25 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
Dec 09 Javascript
express如何使用session与cookie的方法
Jan 30 Javascript
详解vue路由篇(动态路由、路由嵌套)
Jan 27 Javascript
jQuery - AJAX load() 实例用法详解
Aug 27 jQuery
layui默认选中table的CheckBox复选框方法
Sep 19 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
Jul 30 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
玛琪朵 Macchiato
2021/03/03 咖啡文化
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
PHP中的output_buffering详细介绍
2014/09/27 PHP
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
JS中对象与字符串的互相转换详解
2016/05/20 Javascript
layer弹出层框架alert与msg详解
2017/03/14 Javascript
javascript过滤数组重复元素的实现方法
2017/05/03 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
[01:00]DOTA2 store: Collection of Artisan's Wonders
2015/08/12 DOTA
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
[01:52]PWL S2开团时刻第四期——DOTA2成语故事
2020/12/03 DOTA
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
Python语言的变量认识及操作方法
2018/02/11 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
Python使用configparser库读取配置文件
2020/02/22 Python
Python脚本去除文件的只读性操作
2020/03/05 Python
美国在线宠物商店:Chewy
2019/01/12 全球购物
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
网吧收银员岗位职责
2013/12/14 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
说明书怎么写
2014/05/06 职场文书
旷课检讨书范文
2014/10/30 职场文书
2016年党员公开承诺书范文
2016/03/24 职场文书