函数组件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

0
1
阿莱克斯刘
不好意思,一直没看到你的问题。。。
2024-03-26
共1条回复

React18 系统精讲 结合TS打造旅游电商平台

React18 精讲 + 结合 TS 实战 + 热门业务开发,获取必备技能

2008 学习 · 1024 问题

查看课程