首頁 web前端 js教程 如何利用react 實現banner輪播效果

如何利用react 實現banner輪播效果

Jan 21, 2019 am 10:27 AM
react 效果

最近在看react , jsx的語法一開始看起來確實不習慣,但是確實比較靈活

#運行效果:

如何利用react 實現banner輪播效果

import React from 'react';
// import ShadowDOM from 'react-shadow';
import './index.css';
let timeId = null;  // 循环定时的状态
export default class Index extends React.Component {
  constructor () {
    super();
    this.state = {
      timeId: null,
      list: [],
      listClone: [],
      current: 0
    };
  }
  // 删除列表项目
  deleItem (title, date, index) {
    let data = [...this.state.list];
    data.splice(index, 1);
    this.setState({
      list: data
    });
    alert('删除成功!');
  }
  // 点击状态点切换状态
  toggleState (item, index) {
    let data = this.state.listClone;
    this.setState({
      list: data[index],
      current: index
    });
  }
  // 鼠标移入状态点
  stateMouseenter () {
    clearInterval(timeId);
  }
  // 鼠标移出状态点
  stateMouseleave () {
    this.loop(3000); 
  }
  // 轮播事件
  loop (speed) {
    timeId = setInterval(() => {
      let index = this.state.current;
      let data = this.state.listClone;
      if (index < this.state.list.length - 1) {
        index ++;
        this.setState({
          list: data[index],
          current: index
        });
      } else {
        index = 0;
        this.setState({
          list: data[index],
          current: index
        });
      }
    }, speed);
  }
  render () {
    let data = this.state.list;
    let active = &#39;&#39;;
    // 数据列表
    let Li = data.map((item, index) => {
      return (
        <li onClick={this.deleItem.bind(this, item.title, item.date, index)} key={index}>
          <span>{item.title + &#39;==&#39; + index + new Date().getTime()}</span>
          <span>{item.date}</span>
        </li>
      );
    });
    // 状态点
    let span = this.state.listClone.map((item, index) => {
      index === this.state.current ? active = &#39;active&#39; : active = &#39;&#39;;
      return (
        <span
          onClick={this.toggleState.bind(this, item, index)} 
          key={index}
          onMouseEnter={this.stateMouseenter.bind(this)}
          onMouseLeave={this.stateMouseleave.bind(this)}
          className={active}>
          {index + 1}
        </span>
      );
    });
    return (
      <div className="list-item">
        <p className="item-state">{span}</p>
        <ul>{Li}</ul>
      </div>
    );
  }
  componentWillMount () {
    // 页面加载的数据
    let list = [
      {
        date: &#39;2018-02-12 12:54:52&#39;,
        title: &#39;● 今天深圳市天气很好,很适合外出旅游1&#39;
      },
      {
        date: &#39;2018-02-12 12:54:52&#39;,
        title: &#39;● 今天深圳市天气很好,很适合外出旅游2&#39;
      },
      {
        date: &#39;2018-02-12 12:54:52&#39;,
        title: &#39;● 今天深圳市天气很好,很适合外出旅游3&#39;
      },
      {
        date: &#39;2018-02-12 12:54:52&#39;,
        title: &#39;● 今天深圳市天气很好,很适合外出旅游4&#39;
      },
      {
        date: &#39;2018-02-12 12:54:52&#39;,
        title: &#39;● 今天深圳市天气很好,很适合外出旅游5&#39;
      }
    ];
    this.setState({
      list: [...list],
      listClone: [[...list], [...list], [...list], [...list], [...list]]
    });
    this.loop(3000);
  }
  componentDidMount () {
 
  }
  componentDidUpdate () {
 
  }
  componentWillUnmount () {}
};
登入後複製

css:

.list-item {
  width: 600px;
  padding: 10px;
  margin: 40px auto;
  background: #ccc;
  border: 1px solid #eee;
}
.list-item li {
  margin: 10px 0;
  font-size: 14px;
  color: #333;
  text-align: left;
}
.list-item li span:nth-child(2) {
  float: right;
}
.item-state {
  text-align: right;
}
.item-state span {
  display: inline-block;
  height: 20px;
  width: 20px;
  color: #333;
  line-height: 20px;
  text-align: center;
  background: #eee;
  border-radius: 20px;
  margin-left: 5px;
  cursor: pointer;
}
.item-state span.active {
  background: red;
}
登入後複製

以上就是對如何利用react 實現banner輪播效果的全部介紹,希望大家可以有所收穫,更多React視頻教程請關注PHP中文網。

以上是如何利用react 實現banner輪播效果的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1320
25
PHP教程
1269
29
C# 教程
1249
24
輕鬆拿捏 4K 高畫質影像理解!這個多模態大模型自動分析網頁海報內容,打工人簡直不要太方便 輕鬆拿捏 4K 高畫質影像理解!這個多模態大模型自動分析網頁海報內容,打工人簡直不要太方便 Apr 23, 2024 am 08:04 AM

一個可以自動分析PDF、網頁、海報、Excel圖表內容的大模型,對於打工人來說簡直不要太方便。上海AILab,香港中文大學等研究機構提出的InternLM-XComposer2-4KHD(簡寫為IXC2-4KHD)模型讓這一切成為了現實。相較於其他多模態大模型不超過1500x1500的分辨率限制,該工作將多模態大模型的最大輸入影像提升到超過4K(3840x1600)分辨率,並支援任意長寬比和336像素~4K動態解析度變化。發布三天,模型就登頂HuggingFace視覺問答模型熱度排行榜第一。輕鬆拿捏

螢幕好打遊戲才夠爽 iQOO Neo9S Pro+ 螢幕簡析 螢幕好打遊戲才夠爽 iQOO Neo9S Pro+ 螢幕簡析 Jul 19, 2024 pm 03:53 PM

在當今智慧型手機市場中,螢幕素質已成為衡量一款手機綜合性能的關鍵指標之一。 iQOO旗下的Neo系列一直致力於為用戶提供出色的遊戲體驗和視覺享受,最新款產品iQOONeo9SPro+更是採用一塊"三好護眼電競屏",接下來我們就來一起看看這塊屏幕的素質有多出色。 iQOONeo9SPro+搭載了一塊1.5KOLED電競直屏,支援從1Hz到144Hz的旗艦級LTPO自適應刷新率,意味著在顯示靜態內容時能夠實現超低功耗的待機狀態,而在遊戲過程中也能智能切換至90Hz至144Hz的動態高

Java框架與前端React框架的整合 Java框架與前端React框架的整合 Jun 01, 2024 pm 03:16 PM

Java框架與React框架的整合:步驟:設定後端Java框架。建立專案結構。配置建置工具。建立React應用程式。編寫RESTAPI端點。配置通訊機制。實戰案例(SpringBoot+React):Java程式碼:定義RESTfulAPI控制器。 React程式碼:取得並顯示API回傳的資料。

OPPO Find X7 絕絕子!用影像定格你的每一刻 OPPO Find X7 絕絕子!用影像定格你的每一刻 Aug 07, 2024 pm 07:19 PM

在這個快節奏的時代,OPPOFindX7可以用它的影像力量,讓我們去細細品味生活中的每一個美好時刻。無論是壯麗的山川湖海,還是溫馨的家庭聚會,亦或是街頭的偶遇與驚喜,它都能以"絕絕子"的畫質,幫你記錄下來。從外頭看,在相機Deco的設計上,FindX7與Ultra版如出一轍,採用了同心圓弧的造型,參考了專業相機鏡頭的全棱線設計,還有經典的哈蘇"H"大logo,整體看起來很有辨識度,也很有高級感。而內裡也是一絕,首先是基礎的硬體配置。 FindX7維持了上一

純白便攜式 ITX 機殼 九州風神 CH160 試裝體驗 純白便攜式 ITX 機殼 九州風神 CH160 試裝體驗 Apr 23, 2024 am 08:19 AM

在之前的九州風神"風暴海景房"一文中,我們介紹了以九州風神全新冰暴360水冷散熱器、CH780機箱,以及PX1200G電源"三件套"為基礎,打造的遊戲玩家平台。那麼今天,我們將以新款ITX機殼-CH160,全新阿薩辛4S散熱器,以及DQ750M-V3LWH電源,為大家帶來一套純白ITX個性組合。九州風神純白ITX機電散套裝這兩年,喜歡小機殼的玩家,一般DIY用戶越來越多。不少網友透過後台留言,新媒體平台私訊我們,希望我們能推薦一些"好用不貴,安裝簡易"的ITX產品。那今天我們所選擇的這三款產品

vue.js vs.反應:特定於項目的考慮因素 vue.js vs.反應:特定於項目的考慮因素 Apr 09, 2025 am 12:01 AM

Vue.js適合中小型項目和快速迭代,React適用於大型複雜應用。 1)Vue.js易於上手,適用於團隊經驗不足或項目規模較小的情況。 2)React的生態系統更豐富,適合有高性能需求和復雜功能需求的項目。

React在HTML中的作用:增強用戶體驗 React在HTML中的作用:增強用戶體驗 Apr 09, 2025 am 12:11 AM

React通過JSX與HTML結合,提升用戶體驗。 1)JSX嵌入HTML,使開發更直觀。 2)虛擬DOM機制優化性能,減少DOM操作。 3)組件化管理UI,提高可維護性。 4)狀態管理和事件處理增強交互性。

ChinaJoy2024 奔現異世界 Evnia 49 吋巨幕登場 ChinaJoy2024 奔現異世界 Evnia 49 吋巨幕登場 Jul 25, 2024 pm 12:46 PM

ChinaJoy2024將於7月26日至7月29日,在上海的新國際博覽中心舉行。作為ChinaJoy官方合作媒體,中關村在線將在E7展館S101展位,共計795平米,攜手24餘家潮流、科技、數碼品牌共同參與此次年度盛典,打造一場視覺、聽覺、觸覺全覆蓋的—— "坐標上海!這裡潮好玩!"超級嘉年華。這次飛利浦攜旗下遊戲顯示器子品牌Evnia也將參展ChinaJoy2024,除了我們介紹過的EvniaO8系列QDOLED遊戲顯示器32M2N8800以及EvniaM6系列MiniLED

See all articles