亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在反應中顯示懸停在特定卡片上

在反應中顯示懸停在特定卡片上

30秒到達戰場 2023-09-14 17:59:11
我面臨這個問題。我想在選擇的這個框中顯示懸???。Fe 當我將鼠標懸停在框一上時,我想顯示懸停一、框二 -> 懸停二。但在我的示例中,當我將鼠標懸停在“一”上時,兩者都會顯示。我試圖用 refs 或 e.target 來做到這一點,但總是有些事情不是我想要的。鏈接到 stackblitz:https://stackblitz.com/edit/react-hc4741 ?file=src/App.jsimport React, { useState } from "react";import "./style.css";import { BooksSection, BookCard, BookCardHover } from "./Styled";export default function App() {  const [displayBookCardHover, setDisplayBookCardHover] = useState(false);  const showCardHover = () => {    setDisplayBookCardHover(true);  };  const hiddenCardHover = () => {    setDisplayBookCardHover(false);  };  return (    <div>      <BooksSection>        <BookCard          bgColor={"#000"}          color={"#fff"}          onMouseEnter={showCardHover}          onMouseLeave={hiddenCardHover}        >          <BookCardHover display={displayBookCardHover}>            Hover One          </BookCardHover>          Box One        </BookCard>        <BookCard          bgColor={"#fff"}          color={"#000"}          onMouseEnter={showCardHover}          onMouseLeave={hiddenCardHover}        >          <BookCardHover display={displayBookCardHover}>            Hover Two          </BookCardHover>          Box Two        </BookCard>      </BooksSection>    </div>  );}樣式組件import styled from "styled-components";export const BooksSection = styled.div`  display: flex;  flex-direction: row;  flex-wrap: wrap;  width: 100wh;`;export const BookCard = styled.div`  width: 50%;  height: 500px;  padding: 20px 0;  background: ${props => props.bgColor};  color: ${props => props.color};  display: flex;  flex-direction: column;  justify-content: center;  align-items: center;  position: relative;`;export const BookCardHover = styled.div`  position: absolute;  top: 0;  left: 0;  width: 100%;  height: 100%;  font-size: 50px;  background: rgba(0, 0, 0, 0.7);  visibility: ${({ display }) => (display ? "100" : "hidden")};`;
查看完整描述

4 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

問題是你在兩個地方都有完全相同的組件和完全相同的 prop 值,因此無論你對值做什么,它們都會同時顯示/隱藏displayBookCardHover。


訣竅是為每個值使用單獨的值。像這樣:


const [hoverIndex, setHoverIndex] = useState(-1);


...

const showCardHover = (index) => {

  setHoverIndex(index);

}


const hiddenCardHover = () => {

  setHoverIndex(-1);

}


...

<BookCard

  ...

  onMouseEnter={() => showCardHover(0)}

  ...

>

  <BookCardHover display={hoverIndex === 0}>


...


<BookCardHover display={hoverIndex === 1}>

希望你能明白。


順便說一句, prop 沒有“100”值visibility。它要么是“隱藏的”,要么是“可見的”。


查看完整回答
反對 回復 2023-09-14
?
達令說

TA貢獻1821條經驗 獲得超6個贊

import React, { useState } from "react";

import "./style.css";

import { BooksSection, BookCard, BookCardHover } from "./Styled";


export default function App() {

  const [displayBookCardHover, setDisplayBookCardHover] = useState({

  boxOneHover: false,

  boxTowHover: false

});


const showCardHover = box => {

  if (box === 1) {

     setDisplayBookCardHover(ps=>({ ...ps, boxOneHover: true }));

  } else {

     setDisplayBookCardHover(ps=>({ ...ps, boxTowHover: true }));

  }

};

const hiddenCardHover = box => {

  if (box === 1) {

     setDisplayBookCardHover(ps=>({ ...ps, boxOneHover: false }));

  } else {

     setDisplayBookCardHover(ps=>({ ...ps, boxTowHover: false }));

  }

};


return (

 <div>

  <BooksSection>

    <BookCard

      bgColor={"#000"}

      color={"#fff"}

      onMouseEnter={() => showCardHover(1)}

      onMouseLeave={() => hiddenCardHover(1)}

    >

      <BookCardHover display={displayBookCardHover.boxOneHover}>

        Hover One

      </BookCardHover>

      Box One

    </BookCard>

    <BookCard

      bgColor={"#fff"}

      color={"#000"}

      onMouseEnter={() => showCardHover(2)}

      onMouseLeave={() => hiddenCardHover(2)}

    >

      <BookCardHover display={displayBookCardHover.boxTowHover}>

        Hover Two

      </BookCardHover>

      Box Two

    </BookCard>

  </BooksSection>

 </div>

 );

}


查看完整回答
反對 回復 2023-09-14
?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

您的代碼的問題是 - 兩個BookCardHover組件都使用相同的參考狀態來顯示其狀態displayBookCardHover,因此,當一個組件更改 的值時displayBookCardHover,它會自動反映在另一個組件上。


查看完整回答
反對 回復 2023-09-14
?
慕容森

TA貢獻1853條經驗 獲得超18個贊

我認為BookCard應該是一個組件。每個人都應該有自己的狀態。在 App.js 中,您可以使用 BookCard 并傳遞 bgColor 和 color 以及您想要自定義每個 BookCard 的任何內容作為 props 并在其中使用它們。



查看完整回答
反對 回復 2023-09-14
  • 4 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號