最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于React.js實現(xiàn)兔兔牌九宮格翻牌抽獎組件

 更新時間:2023年01月12日 17:11:49   作者:鹿魚  
這篇文章主要為大家詳細介紹了如何基于React.js實現(xiàn)兔兔牌九宮格翻牌抽獎組件,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下

基礎(chǔ)頁面結(jié)構(gòu)

import React, { useEffect, useState } from "react"
import './index.css'

const FlopLuckyDraw9 = () => {

  return (
    <>
      <div className="title">
        可抽獎
        <label >{count}</label>
        次
      </div>
      <div className="box">
        {
          list.map((item) => {
            return (
              <div className="item" key={item.id}>
                <div className={`style1`}>抽獎</div>
                <div className={`style2`}>{item.name}</div>
              </div>
            )
          })
        }
      </div>
    </>
  )
}

export default FlopLuckyDraw9

初始化數(shù)據(jù)

import React, { useEffect, useState } from "react"
import './index.css'

const data = [
  { id: 1, name: '1元優(yōu)惠券' },
  { id: 2, name: '10元優(yōu)惠券', },
  { id: 3, name: '謝謝惠顧' },
  { id: 4, name: '豪華電動車' },
  { id: 5, name: '1w購物券' },
  { id: 6, name: '5w購物券' },
  { id: 7, name: '豪華轎車' },
  { id: 8, name: '房子一套' },
  { id: 9, name: '頂配筆記本' }
]

const FlopLuckyDraw9 = () => {
  const [count, setCount] = useState(3)
  const [list, setList] = useState([])

  useEffect(() => {
    setList(data.map((i) => {
      return {
        ...i,
        showName: false,
        showResult: false
      }
    }))
  }, [])

  return (
    <></>
  )
}

export default FlopLuckyDraw9

翻轉(zhuǎn)邏輯

點擊 item 時,將 showName 變?yōu)?true,改變類名,實現(xiàn)翻轉(zhuǎn)效果。

const FlopLuckyDraw9 = () => {

  const handleClick = (item) => {
    setList(list.map((i) => {
      if (i.id === item.id) {
        return {
          ...i,
          showName: true,
        }
      } else {
        return i
      }
    }))
  }

  return (
    <>
      <div className="box">
        {
          list.map((item) => {
            return (
              <div className="item" onClick={() => handleClick(item)} key={item.id}>
                <div className={`style1 ${item.showName ? 'hide' : null}`}>抽獎</div>
                <div className={`style2 ${item.showName ? 'show' : null}`}>{item.name}</div>
              </div>
            )
          })
        }
      </div>
    </>
  )
}

export default FlopLuckyDraw9

count 為 0

當 count 為 0 時,將所有的牌全部都翻轉(zhuǎn)出來,同時添加未選中的類名。

const FlopLuckyDraw9 = () => {
  const [count, setCount] = useState(3)

  useEffect(() => {
    setTimeout(() => {
      // 監(jiān)聽 count
      if (count === 0) {
        setList(list.map((i) => {
          if (!i.showName) {
            return {
              ...i,
              showName: true,
              showResult: true
            }
          } else {
            return {
              ...i,
              showName: true,
            }
          }
        }))
      }
    }, 1000);
  }, [count])

  const handleClick = (item) => {
    if (count === 0) {
      return;
    }
    // ....
    setCount(count => count - 1)
  }

  return (
    <>
      <div className="title">
        可抽獎
        <label >{count}</label>
        次
      </div>
      <div className="box">
        {
          list.map((item) => {
            return (
              <div>
                <div className={`style2 ${item.showName ? 'show' : null} ${item.showResult ? 'show-result' : null}`}>{item.name}</div>
              </div>
            )
          })
        }
      </div>
    </>
  )
}

export default FlopLuckyDraw9

100% 中獎

100% 中獎?代碼是自己的,改吧改吧就可以了。

const data = [
  { id: 1, name: '1元優(yōu)惠券', is: true },
  { id: 2, name: '10元優(yōu)惠券', },
  { id: 3, name: '謝謝惠顧', is: true },
  { id: 4, name: '豪華電動車' },
  { id: 5, name: '1w購物券' },
  { id: 6, name: '5w購物券' },
  { id: 7, name: '豪華轎車' },
  { id: 8, name: '房子一套', is: true },
  { id: 9, name: '頂配筆記本' }
].sort(v => Math.random() - 0.5)

const FlopLuckyDraw9 = () => {
  const [winAPrize, setWinAPrize] = useState([])

  const handleClick = (item) => {
    // ...
    const winAPrizeItem = winAPrize.pop()
    setList(list.map((i) => {
      if (i.id === item.id) {
        return {
          ...i,
          showName: true,
          name: winAPrizeItem.name
        }
      } else {
        return i
      }
    }))
    // ...
  }

  useEffect(() => {
    setWinAPrize(data.filter(v => v.is))
  }, [])

  return (
    <></>
  )
}

export default FlopLuckyDraw9

效果圖

以上就是基于React.js實現(xiàn)兔兔牌九宮格翻牌抽獎組件的詳細內(nèi)容,更多關(guān)于React.js九宮格翻牌抽獎的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • TS裝飾器bindThis優(yōu)雅實現(xiàn)React類組件中this綁定

    TS裝飾器bindThis優(yōu)雅實現(xiàn)React類組件中this綁定

    這篇文章主要為大家介紹了TS裝飾器bindThis優(yōu)雅實現(xiàn)React類組件中this綁定,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • React進行路由跳轉(zhuǎn)的方法匯總

    React進行路由跳轉(zhuǎn)的方法匯總

    在 React 中進行路由跳轉(zhuǎn)有多種方法,具體取決于你使用的路由庫和版本,以下是常見的路由跳轉(zhuǎn)方法匯總,主要基于 react-router-dom 庫,文中并通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • react遞歸組件實現(xiàn)樹的示例詳解

    react遞歸組件實現(xiàn)樹的示例詳解

    在一些react項目中,常常有一些需要目錄樹這種結(jié)構(gòu),這篇文章主要為大家介紹了如何使用遞歸組件實現(xiàn)樹,感興趣的小伙伴可以了解下
    2024-10-10
  • react-router-dom入門使用教程(前端路由原理)

    react-router-dom入門使用教程(前端路由原理)

    這篇文章主要介紹了react-router-dom入門使用教程,主要包括react路由相關(guān)理解,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • 詳解React中常見的三種路由處理方式選擇

    詳解React中常見的三種路由處理方式選擇

    這篇文章主要為大家詳細介紹了React中常見的三種路由處理方式該如何選擇,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-01-01
  • React?Context原理深入理解源碼示例分析

    React?Context原理深入理解源碼示例分析

    這篇文章主要為大家介紹了React?Context原理深入理解源碼示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • react實現(xiàn)Modal彈窗效果

    react實現(xiàn)Modal彈窗效果

    這篇文章主要為大家詳細介紹了react實現(xiàn)Modal彈窗效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • React?Hooks?實現(xiàn)的中文輸入組件

    React?Hooks?實現(xiàn)的中文輸入組件

    這篇文章主要為大家介紹了React?Hooks實現(xiàn)的中文輸入組件示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • ReactNative錯誤采集原理在Android中實現(xiàn)詳解

    ReactNative錯誤采集原理在Android中實現(xiàn)詳解

    這篇文章主要為大家介紹了ReactNative錯誤采集原理在Android中實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 十分鐘帶你快速了解React16新特性

    十分鐘帶你快速了解React16新特性

    這篇文章主要介紹了十分鐘帶你快速了解React16新特性,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論

繁峙县| 固安县| 乌什县| 德化县| 达孜县| 新河县| 和平区| 绍兴市| 鹤岗市| 北安市| 乐亭县| 中山市| 石首市| 沙湾县| 宜兰县| 崇义县| 阿鲁科尔沁旗| 儋州市| 晋江市| 石柱| 南京市| 东乡族自治县| 海阳市| 夹江县| 图们市| 阿坝| 辉南县| 兴安县| 定远县| 江川县| 霸州市| 河北区| 香港| 额济纳旗| 阜阳市| 沧州市| 丁青县| 茂名市| 石阡县| 芒康县| 增城市|