中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于React.js如何實現兔兔牌九宮格翻牌抽獎組件

發布時間:2023-01-13 10:09:38 來源:億速云 閱讀:126 作者:iii 欄目:開發技術

這篇文章主要介紹了基于React.js如何實現兔兔牌九宮格翻牌抽獎組件的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇基于React.js如何實現兔兔牌九宮格翻牌抽獎組件文章都會有所收獲,下面我們一起來看看吧。

基礎頁面結構

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

初始化數據

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

const data = [
  { id: 1, name: '1元優惠券' },
  { id: 2, name: '10元優惠券', },
  { 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

翻轉邏輯

點擊 item 時,將 showName 變為 true,改變類名,實現翻轉效果。

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 時,將所有的牌全部都翻轉出來,同時添加未選中的類名。

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

  useEffect(() => {
    setTimeout(() => {
      // 監聽 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元優惠券', is: true },
  { id: 2, name: '10元優惠券', },
  { 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如何實現兔兔牌九宮格翻牌抽獎組件

基于React.js如何實現兔兔牌九宮格翻牌抽獎組件

關于“基于React.js如何實現兔兔牌九宮格翻牌抽獎組件”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“基于React.js如何實現兔兔牌九宮格翻牌抽獎組件”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜春市| 应用必备| 景宁| 旺苍县| 潍坊市| 文安县| 清徐县| 资源县| 高淳县| 龙山县| 香港| 广安市| 德清县| 贡嘎县| 高邮市| 凯里市| 边坝县| 宜君县| 盐池县| 临沧市| 正宁县| 谢通门县| 祁连县| 北安市| 依兰县| 观塘区| 永胜县| 阳谷县| 卢湾区| 敦煌市| 蚌埠市| 二连浩特市| 斗六市| 三门峡市| 江都市| 平塘县| 响水县| 泸水县| 双鸭山市| 兴宁市| 文水县|