欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于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

當(dāng) 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)文章

  • 淺析React 對state的理解

    淺析React 對state的理解

    state狀態(tài)是組件實例對象身上的狀態(tài),不是組件類本身身上的,是由這個類締造的實例身上的。這篇文章主要介紹了React 對state的理解,需要的朋友可以參考下
    2021-09-09
  • 解決React報錯Cannot assign to 'current' because it is a read-only property

    解決React報錯Cannot assign to 'current'

    這篇文章主要為大家介紹了React報錯Cannot assign to 'current' because it is a read-only property的解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • react.js組件實現(xiàn)拖拽復(fù)制和可排序的示例代碼

    react.js組件實現(xiàn)拖拽復(fù)制和可排序的示例代碼

    這篇文章主要介紹了react.js組件實現(xiàn)拖拽復(fù)制和可排序的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • react調(diào)試和測試代碼的小技巧

    react調(diào)試和測試代碼的小技巧

    在開發(fā)React應(yīng)用時,嚴格模式StrictMode可以幫助開發(fā)者捕捉到組件中的錯誤和潛在問題,安裝React Developer Tools瀏覽器擴展檢查組件的props和狀態(tài),直接修改以及分析性能,@testing-library/react和Cypress或Playwright等工具可以有效地測試React組件和執(zhí)行端到端測試
    2024-10-10
  • 詳解react-navigation6.x路由庫的基本使用

    詳解react-navigation6.x路由庫的基本使用

    最近兩個項目都用到了React Navigation,所以就研究一下如何使用,本文主要介紹了react-navigation6.x路由庫的基本使用,感興趣的可以了解一下
    2021-11-11
  • react native之ScrollView下拉刷新效果

    react native之ScrollView下拉刷新效果

    這篇文章主要為大家詳細介紹了react native之ScrollView下拉刷新效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • React中useTransition鉤子函數(shù)的使用詳解

    React中useTransition鉤子函數(shù)的使用詳解

    React?18的推出標(biāo)志著React并發(fā)特性的正式到來,其中useTransition鉤子函數(shù)是一個重要的新增功能,下面我們就來學(xué)習(xí)一下useTransition鉤子函數(shù)的具體使用吧
    2024-02-02
  • react-json-editor-ajrm解析錯誤與解決方案

    react-json-editor-ajrm解析錯誤與解決方案

    由于歷史原因,項目中 JSON 編輯器使用的是 react-json-editor-ajrm,近期遇到一個嚴重的展示錯誤,傳入編輯器的數(shù)據(jù)與展示的不一致,這是產(chǎn)品和用戶不可接受的,本文給大家介紹了react-json-editor-ajrm解析錯誤與解決方案,需要的朋友可以參考下
    2024-06-06
  • react中實現(xiàn)拖拽排序react-dnd功能

    react中實現(xiàn)拖拽排序react-dnd功能

    這篇文章主要介紹了react中實現(xiàn)拖拽排序react-dnd功能,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • 利用React-router+Webpack快速構(gòu)建react程序

    利用React-router+Webpack快速構(gòu)建react程序

    目前 React、Webpack 等技術(shù)如火如荼,你是不是還在愁苦如何把這些雜亂的知識怎么學(xué)習(xí)一下,開啟一段新的前端開發(fā)之路呢?那么這篇將給大家運用示例代碼詳細的介紹使用React-router和Webpack如何快速構(gòu)建一個react程序,感興趣的朋友們下面來一起看看吧。
    2016-10-10

最新評論