reactjs - 子用参数触发父函数
问题描述
我正在使用 React 钩子并尝试在事件onChange
发生时将一些参数从子函数传递给父函数,但它显示错误answerHandler not a function
。
父视图:
export default function Setting() {
...
const answerHandler = (questionId, answerId) => {
// some codes here
}
return (
<div>
<Question answerHandler={answerHandler} />
</div>
);
}
子视图:
export default function Question({ answerHandler }) {
...
return (
<div>
<input
type="checkbox"
name="answer"
onChange={answerHandler(1, 2)}
value="1"
/> Answer 1
</div>
);
}
编辑:
主要错误仅TypeError: answerHandler is not a function
显示显示文件路径path-url-here/Question.js:68
并指向错误行的内容onChange={answerHandler(1, 2)}
而且,如果没有要传递的参数,它也可以工作。
解决方案
当你有参数时,你不应该像这样在 child 中编写你的 answerHandler 函数。因为它是在渲染时调用的,并且可能会在每个渲染上导致错误或无限循环。试试这样:
子视图:
export default function Question({ answerHandler }) {
...
return (
<div>
<input
type="checkbox"
name="answer"
onChange={()=>answerHandler(1, 2)}
value="1"
/> Answer 1
</div>
);
}
推荐阅读
- python - 如何使用 Python 将日期和列表写入文本文件?
- flutter - 如何在颤动中检测屏幕上列表项的索引
- electron - 在所有屏幕上全屏显示窗口
- python - float('25') 有效,但 int('25.2') 无效。为什么?
- javascript - 在处理程序中应用 React useState 后如何获取新更改的值?
- python - 超出时间限制错误后优化序列码
- node.js - graphql-使用 apollo-server-express 上传多个文件传输
- azure - Cosmos SQL DB 中的批量更新数据
- html - 弹性包装:换行;不能与多个弹性盒一起正常工作
- amazon-cloudfront - 如何将主机标头作为“X-Forwarded-Host”传递到 Cloudfront 中的来源