You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React项目中从其他组件触发打开Material UI的Drawer组件

问题根源

你给Header组件传递的setCartOpen是挂载在props对象上的属性,而函数组件的第二个入参只有转发ref时才会使用,你当前的写法无法正确获取到父组件传下来的状态修改方法,所以触发无效。

最简解决方案

二选一即可:

方案1:直接从props调用方法

修改Header组件内的按钮点击逻辑:

// 删掉原来入参里的setCartOpen,所有自定义传参都在第一个props对象里
const Header = (props) => {
// 其他逻辑省略
<button onClick={() => props.setCartOpen(true)}>
  <Badge badgeContent={props.countCartItems}/>
</button>
// 其他逻辑省略
}

方案2:解构props获取方法

在Header组件的入参位置直接解构出需要的属性,写法更简洁:

// 可按需把其他你用到的props属性一起解构
const Header = ({ countCartItems, setCartOpen }) => {
// 其他逻辑省略
<button onClick={() => setCartOpen(true)}>
  <Badge badgeContent={countCartItems}/>
</button>
// 其他逻辑省略
}

内容的提问来源于stack exchange,提问作者user13696121

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:06:00