javascript - 使用 React 在 onClick 处执行两个函数
问题描述
我目前有这个表,当用户单击按钮时,它会切换到“editForm”状态,但我还想在用户单击按钮时更改 idColab 状态,我该如何实现呢?
obs:ID 作为参数传递。
const [editForm, setEditForm] = useState(false)
const [idColab, setIdColab] = useState("")
const exibirForm = () => {
setEditForm(!editForm)
}
const setIdColab = (id) => {
idColab = id
}
ID 来自此映射:
const renderTable = () => {
return data.map((colaborador, idx) => {
const {id, nome, matricula, funcao, tipo_acesso, cpf} = colaborador
return (
<tr>
<td className='data-cell'>{nome}</td>
<td className='data-cell'>{matricula}</td>
<td className='data-cell'>{newFuncao}</td>
<td className='data-cell'>{newAcesso}</td>
<td className='data-cell'>{cpf}</td>
<td className='data-cell'>{id}</td>
<td className='btn-cell'><input className="edit-btn" type="submit" value="Editar" onClick={exibirForm(id)} /></td>
</tr>
)
})
}
解决方案
选项1
通过在被调用函数中添加代码:
const exibirForm = () => {
setEditForm(!editForm)
setInput({ idColab: "1234" });
}
选项 2
通过创建一个调用更多函数的函数
const masterFunction = () => {
function1();
function2();
// ... more functions ...
}
或者更紧凑:
<input onClick={() => { function1(); function2(); }} />
推荐阅读
- sql - 使用 Oracle 将 XML 请求插入到 clob 列中
- stripe-payments - Stripe Payment Intents 和 charge.succeeded webhook 有时不会触发
- c++ - SFML 未定义的引用,即使定义了库
- android - AsyncTask 代码添加到 Android 中的服务
- html - 为什么将我的 div 显示为内联会导致它们与我的 h1 重叠?
- php - 警告:php 7.3 上的非法字符串偏移
- android - 首次启动 Android Studio 时出现 Gradle 构建错误
- java - FXML 文件中的 For 循环 || 如何将数据从控制器发送到 fxml 文件?
- cesium - 如何将经纬度信息加载到cesium kmlDataSource中?
- flutter - 颤振本地通知无法在单击时导航到另一条路线