函数组件ShoppingCar无法获取下拉列表问题
来源:4-8 【全局数据传递】组件化Context Provider

慕虎3278424
2024-01-26
interface State {
isOpen: boolean
}
// 初始值
// 函数组件
const ShoppingCar: React.FC = ({isOpen}) => {
const value = useContext(appContext);
const handleClick = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
// console.log(e.target)
// console.log(e.currentTarget)
if ((e.target as HTMLElement).nodeName == “SPAN”) {
console.log(isOpen)
isOpen = !isOpen
console.log(isOpen)
}
}
return (
<div className={styles.cartContainer}>
<button className={styles.button} onClick={handleClick}>
<FiShoppingCart/>
<span>购物车 {value.shoppingCart.items.length} (件)</span>
</button>
这里的isOpen一直不能改变状态 无法通过点击获取下拉列表
<div className={styles.cartDropDown} style={{display: isOpen ? "block" : "none"}}>
<ul>
{value.shoppingCart.items.map((i) => (
<li>{i.name}</li>
))}
</ul>
</div>
</div>
);
}
问题:
isOpen一直不能改变状态 无法通过点击获取下拉列表
写回答
1回答
-
阿莱克斯刘
2024-03-26
同学你好,你在重构ShoppingCar需要注意 状态 isOpen 是 state 而不是 props, 所以我们应该使用hook useState 来定义 isOpen。
012024-03-26
相似问题