溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

React組件內(nèi)事件傳參實(shí)現(xiàn)tab切換的示例代碼

發(fā)布時(shí)間:2020-09-20 18:10:45 來(lái)源:腳本之家 閱讀:202 作者:木子昭 欄目:web開發(fā)

本文介紹了React組件內(nèi)事件傳參實(shí)現(xiàn)tab切換的示例代碼,分享給大家,具體如下:

  1. 組件內(nèi)默認(rèn)onClick事件觸發(fā)函數(shù)actionClick, 是不帶參數(shù)的,
  2. 不帶參數(shù)的寫法: 如onClick= { actionItem }
  3. 帶參數(shù)的寫法, onClick = { this.activateButton.bind(this, 0) }

下面是一個(gè)向組件內(nèi)函數(shù)傳遞參數(shù)的小例子

需求: 在頁(yè)面的底部, 有四個(gè)按鈕, 負(fù)責(zé)切換內(nèi)容, 當(dāng)按鈕被點(diǎn)擊時(shí), 變?yōu)榧せ顮顟B(tài), 其余按鈕恢復(fù)到未激活狀態(tài)

分析: 我們首先要?jiǎng)?chuàng)建點(diǎn)擊事件的處理函數(shù), 當(dāng)按鈕被點(diǎn)擊時(shí), 將按鈕的id作為參數(shù)發(fā)送給處理函數(shù), 處理函數(shù)激活對(duì)應(yīng)當(dāng)前id的按鈕, 并將其余三個(gè)按鈕調(diào)整到未激活狀態(tài)

實(shí)現(xiàn): 用組件state創(chuàng)建一個(gè)含有四個(gè)元素的一維數(shù)組, 四個(gè)元素默認(rèn)為零, 但界面中某個(gè)按鈕被點(diǎn)擊時(shí), 組件內(nèi)處理函數(shù)將一維數(shù)組內(nèi)對(duì)應(yīng)元素變?yōu)?, 其它元素變?yōu)?

效果演示:

React組件內(nèi)事件傳參實(shí)現(xiàn)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);
    }

    // 根據(jù)參數(shù)id, 來(lái)確定激活四個(gè)item中的哪一個(gè)
    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"));

小結(jié)

React組件內(nèi)事件傳參實(shí)現(xiàn)tab切換的示例代碼

上面的例子也可以通過event.target.value快速實(shí)現(xiàn),但這個(gè)demo的擴(kuò)展性更好, 在版本迭代過程中, 我們可以傳遞數(shù)量更多的參數(shù), 詳盡的描述UI層當(dāng)前的狀態(tài), 方便業(yè)務(wù)的擴(kuò)展

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI