4 回答

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
問題是你在兩個(gè)地方都有完全相同的組件和完全相同的 prop 值,因此無論你對值做什么,它們都會(huì)同時(shí)顯示/隱藏displayBookCardHover。
訣竅是為每個(gè)值使用單獨(dú)的值。像這樣:
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。它要么是“隱藏的”,要么是“可見的”。

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
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>
);
}

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
您的代碼的問題是 - 兩個(gè)BookCardHover
組件都使用相同的參考狀態(tài)來顯示其狀態(tài)displayBookCardHover
,因此,當(dāng)一個(gè)組件更改 的值時(shí)displayBookCardHover
,它會(huì)自動(dòng)反映在另一個(gè)組件上。

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
我認(rèn)為BookCard應(yīng)該是一個(gè)組件。每個(gè)人都應(yīng)該有自己的狀態(tài)。在 App.js 中,您可以使用 BookCard 并傳遞 bgColor 和 color 以及您想要自定義每個(gè) BookCard 的任何內(nèi)容作為 props 并在其中使用它們。
添加回答
舉報(bào)