购物车列表显示隐藏失效
来源:4-8 【全局数据传递】组件化Context Provider

Zhang_Kyra
2021-06-23
老师您好, 代码如下,每次点击isOpen值都会改变,但是style没有生效,请老师帮忙看下哪里出的问题。
interface IsOpenState {
isOpen: boolean;
}
const isOpenState : IsOpenState = {
isOpen:false
}
const ShoppingCart: React.FC = () => {
const [isOpen, setIsOpen] = useState(isOpenState);
const value = useContext(appContext);
const handleDisplay = () => {
setIsOpen((state)=>{
console.log("isOpen",isOpen);
console.log("state.isOpen",!state.isOpen);
return {isOpen: !state.isOpen}
});
}
return (
<div className={styles.cartContainer}>
<button className={styles.button}
onClick={handleDisplay}
>
<FiShoppingCart />
<span>购物车:{value.shoppingCart.items.length}件</span>
</button>
<div>
<ul className={styles.cartDropDown}
style={{
display: isOpen ? "block" : "none"
}}
>
{value.shoppingCart.items.map(item =>
<li>{item.name}</li>
)}
</ul>
</div>
</div>
);
}
export default ShoppingCart;
==========
将代码修改如下,下拉列的显示与隐藏生效。
const [isOpen, setIsOpen] = useState(false);
const value = useContext(appContext);
const handleDisplay = () => {
setIsOpen(!isOpen);
}
写回答
2回答
-
丛从绿草
2021-12-15
{value.shoppingCart.items.map(item => <li>{item.name}</li> )}
改成
{value.shoppingCart.items.map((i) => {
return <li key={i.id}>{i.name}</li>
})}
应该就没问题了。我是这里的问题导致不能显示。
00 -
阿莱克斯刘
2021-06-25
hello 同学,我有点迷糊,所以你现在的代码是工作的还是不工作的?我没太看明白
032021-06-28
相似问题