javascript - 使用 React,我无法将带有参数的函数发送到我的一个组件
问题描述
我将 React 与 NextJS 一起使用
我想要做的是能够向我的“警报”组件发送一个具有参数的函数,以便它可以在执行该函数之前等待用户反馈。
例如,在清除列表之前,我想确保用户在实际触发该功能之前可以确认。
所以,基本上是从这行代码开始的
pushAlert(closeAlert, "New List Warning", "Generating a new list will erase all unlocked instruments. Would you like to continue?", "danger", () => {generateNewList(min, max)}, undefined, false)
将注意力集中在第五个道具上,即 '() => {generateNewList(min, max)}' 部分。此外, min 和 max 都是父函数的参数
这是 pushAlert 的样子
const pushAlert = (onClosing, alertHeading, alertText, alertVariant, methodToExecute, buttonText, buttonless) => {
setAlerts([...alerts, {
"key": keyInc,
"onClosing": onClosing,
"alertHeading": alertHeading,
"alertText": alertText,
"alertVariant": alertVariant,
"methodToExecute": methodToExecute,
"buttonText": buttonText,
"buttonless": buttonless
}])
setKeyInc(keyInc + 1)
console.log(methodToExecute)
}
基本上,我将所有警报存储在一个数组中,然后我将这些 JS 对象发送到一个反应组件,该组件将为我在该数组中的每个警报生成引导警报。
很标准的东西。
为简洁起见,这里是在我的 Alerts 函数中使用“methodToExecute”的地方。只是不想用可能不相关的代码轰炸你,让我知道我是否需要粘贴更多内容。
<Button variant={alert.alertVariant} onClick={()=> {alert.methodToExecute != undefined ? alert.methodToExecute : onClosing(alert.key)}}>{alert.buttonText != undefined ? alert.buttonText : 'OK'}</Button>
但是当前代码不起作用。我最初用于将函数推送到新警报对象中的语法是否存在问题?或者是别的什么?
我已经完成并记录了“methodToExecute”,奇怪的是,当我记录它时,它实际上返回了调用第一行代码的父函数。
谢谢你的帮助!让我知道我是否需要添加一些我排除的代码!
解决方案
根据您的Button
代码,您似乎根本没有调用methodToExecute
回调函数。
<Button
variant={alert.alertVariant}
onClick={() => {
alert.methodToExecute != undefined
? alert.methodToExecute // <-- not invoked!!
: onClosing(alert.key);
}}
>
{alert.buttonText != undefined ? alert.buttonText : 'OK'}
</Button>
鉴于:
pushAlert(
closeAlert,
"New List Warning",
"Generating a new list will erase all unlocked instruments. Would you like to continue?",
"danger",
() => { generateNewList(min, max); },
undefined,
false
)
第五个参数是一个函数,应该在按钮的onClick
处理程序中调用。
<Button
variant={alert.alertVariant}
onClick={() => {
alert.methodToExecute != undefined
? alert.methodToExecute() // <-- invoked!!
: onClosing(alert.key);
}}
>
{alert.buttonText != undefined ? alert.buttonText : 'OK'}
</Button>
推荐阅读
- c# - 从 ObjectResult 中获取值
- node.js - VSTS CopyFiles 任务产生错误“无法写入目标文件(代码=EPERM)”
- c++ - 编译期间无法链接opencv库
- reactjs - 如何在 React js 中使用 superagent 的 .retry?
- sql - 选择中间的 SQL DISTINCT
- asp.net - ASP.NET 更快的上传
- jquery - 传入函数时获取输入元素的名称
- json - fullcalendar - 如何在自定义视图中格式化小日期?
- reactjs - React:条件渲染的问题
- sql-server - SQL Server 2008