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

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

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

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

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

const FlopLuckyDraw9 = () => {

  return (
    <>
      <div className="title">
        可抽獎(jiǎng)
        <label >{count}</label>
        次
      </div>
      <div className="box">
        {
          list.map((item) => {
            return (
              <div className="item" key={item.id}>
                <div className={`style1`}>抽獎(jiǎng)</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: '豪華電動(dòng)車(chē)' },
  { id: 5, name: '1w購(gòu)物券' },
  { id: 6, name: '5w購(gòu)物券' },
  { id: 7, name: '豪華轎車(chē)' },
  { 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)邏輯

點(diǎn)擊 item 時(shí),將 showName 變?yōu)?true,改變類(lèi)名,實(shí)現(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}`}>抽獎(jiǎng)</div>
                <div className={`style2 ${item.showName ? 'show' : null}`}>{item.name}</div>
              </div>
            )
          })
        }
      </div>
    </>
  )
}

export default FlopLuckyDraw9

count 為 0

當(dāng) count 為 0 時(shí),將所有的牌全部都翻轉(zhuǎn)出來(lái),同時(shí)添加未選中的類(lèi)名。

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

  useEffect(() => {
    setTimeout(() => {
      // 監(jiān)聽(tīng) 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">
        可抽獎(jiǎng)
        <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% 中獎(jiǎng)

100% 中獎(jiǎng)?代碼是自己的,改吧改吧就可以了。

const data = [
  { id: 1, name: '1元優(yōu)惠券', is: true },
  { id: 2, name: '10元優(yōu)惠券', },
  { id: 3, name: '謝謝惠顧', is: true },
  { id: 4, name: '豪華電動(dòng)車(chē)' },
  { id: 5, name: '1w購(gòu)物券' },
  { id: 6, name: '5w購(gòu)物券' },
  { id: 7, name: '豪華轎車(chē)' },
  { 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實(shí)現(xiàn)兔兔牌九宮格翻牌抽獎(jiǎng)組件的詳細(xì)內(nèi)容,更多關(guān)于React.js九宮格翻牌抽獎(jiǎng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

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

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

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

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

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

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

    詳解React中常見(jiàn)的三種路由處理方式選擇

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

收藏| 满洲里市| 泰和县| 昌乐县| 怀柔区| 神木县| 定结县| 嘉禾县| 日土县| 卢湾区| 西藏| 洛宁县| 岳西县| 徐汇区| 宁阳县| 扶余县| 遂平县| 鲁山县| 塔河县| 阿荣旗| 澄城县| 买车| 泸水县| 东阳市| 海林市| 桑日县| 资中县| 周口市| 南丹县| 平罗县| 聂拉木县| 措勤县| 家居| 昌图县| 皮山县| 夏邑县| 如东县| 盱眙县| 壤塘县| 揭西县| 常宁市|