reactjs - 将函数传递给另一个组件得到错误,这是未定义的反应 js
问题描述
我正在开发一个带有滑动菜单的应用程序,但我收到以下错误。
这没有定义
我的代码
我的文件
const toggleMenu = () => {
alert("clicked");
state = !state
if (state === false) {
const visibllity = "close";
alert("open")
} else {
const viisibility = "open"
alert("close")
}
}
return (
<RiderHeader toggleMenu={this.toggleMenu()} />
)
RiderHeader.js
return (
<div className="user-header">
<IconButton onClick={() => toggleMenu()}>
<MenuIcon />
</IconButton>
</div>
)
解决方案
this您在声明(或将其作为道具传递)时不应调用该函数。
<Component prop={this.func} /> or <Component prop={() => this.func()} />
在定义了 toggleMenu 的文件中,
return (
<RiderHeader toggleMenu={this.toggleMenu} />
)
在 RiderHeader.js 中,如果它是一个类组件,那么,
return (
<div className="user-header">
<IconButton onClick={() => this.props.toggleMenu()}>
{/* or
<IconButton onClick={this.props.toggleMenu}>
*/}
<MenuIcon />
</IconButton>
</div>
)
如果它是一个功能组件,
return (
<div className="user-header">
<IconButton onClick={() => props.toggleMenu()}>
{/* or
<IconButton onClick={props.toggleMenu}>
*/}
<MenuIcon />
</IconButton>
</div>
)
推荐阅读
- r - R在R中展平不同长度的嵌套列表(谷歌地理编码API输出)
- flutter - 颤振如何像附加的图像一样向数据列添加颜色,而不导入任何包
- go - 无法找到 Protobuf Unmarshal 错误的解决方案
- reactjs - 如何将 req 值传递到 Sequelize findAll
- swift - MDCOutlinedTextField 未正确显示
- spring-boot - springboot API 抛出 500 错误但没有记录错误
- apache-kafka - 窗口组后的Kafka流总和数据
- ruby - 使用自定义排序首选项对数组进行排序,其中 m 个首选项和 n 个元素为 m < n
- javascript - 无法通过 node.js 从 lambda 获取 Amazon CloudWatch Logs
- r - 在 R 中重新调整植被指数