2 回答

TA貢獻1796條經驗 獲得超7個贊
首先祝你好運!
您的代碼所說的是:當用戶單擊其中一項(特別是 h5 標簽)時,將高度設置為自動。你給每個項目這個高度,不區分它是否應該打開。
因此,您要做的是將您在“狀態”屬性中更改的高度僅應用于用戶單擊的項目。
我添加了幾行代碼來實現它。
添加另一個 state 屬性,稱為
activeItem
指示哪些是活動項(用戶單擊的項)。在 displayPara 函數中添加一個參數:我們要顯示的活動索引。
僅將我們在函數中設置的高度應用于
activeItem
.
在這里你可以看到它。
import React, {useState} from 'react'
import style from './stylecss.module.css'
import AnimateHeight from 'react-animate-height'
import cx from 'classname'
import globalStyles from '../Assets/globalstyles/bootstrap.module.css'
function Collapse() {
const item = [
{
heading : "HEADING 1",
para : "DATA 1"
},
{
heading : "HEADING 2",
para : "DATA 2"
}
]
const [state, setState] = useState("0")
const [activeItem, setActiveItem] = useState(null)
function displayPara (index){
console.log(itemPlace)
setActiveItem(index)
if(state==0)
setState("auto")
else
setState(0)
}
const itemPlace = item.map(({heading, para}, index) => {
return (
<div>
<h5 onClick={ e => displayPara(index)}>
{heading}
</h5>
<AnimateHeight duration={ 500 } height={ `${activeItem === index ? state : 0}` }>
<p>{para}</p>
</AnimateHeight>
</div>
)
})
return (
<div className={style.AboutPage}>
{itemPlace}
</div>
)
}
export default Collapse
正如上面的評論之一所說,您也可以在不保持任何狀態的情況下使用 details 和 summary HTML 標簽在本地實現它。您還可以使用 CSS 將其樣式設置為與您的設計完全相同。
<details>
<summary>Heading 1</summary>
<p>Heading 1 Content</p>
</details>

TA貢獻1851條經驗 獲得超3個贊
你可以在本地做。
<details>
<summary>Epcot Center</summary>
<p>Epcot is a theme park at Walt Disney World Resort featuring exciting attractions, international pavilions, award-winning fireworks and seasonal special events.</p>
</details>
添加回答
舉報