javascript - 当事件在父级中触发时,将值从 React 子级传递给父级组件?
问题描述
我知道“将价值从孩子传递给父母”是一个常见问题,但我找不到我的具体案例的答案。
基本上,我有一个父组件,它有一个具有输入值的子组件列表。
function Parent() {
function submit() {
// make some API call with the values from the children.
}
return (
<Child></Child>
<Child></Child>
...
<Button onClick={submit}>Submit</Button>
)
}
function Child() {
return (
<TextField></TextField>
)
}
我知道您通常会将一个函数作为道具传递给孩子们。如果孩子知道何时调用该函数,这将起作用,但在这种情况下,父母只知道,因为它有触发事件的按钮。
我可以在子级内的 TextField 中使用onChange
事件侦听器,并在我们更改文本时不断更新父级中的状态。但是,当我只想在提交时获取值时,这似乎很复杂。
解决方案
如果您不想使用本地状态和 onChange 事件(如您所说),则可以使用 useRef 并直接读取该值。看这个例子:
https://gist.github.com/jamesreggio/142215754ad06f375bd87657c6227ed8
基本上,您的每个子组件都会获得 ref,它将转发到您的输入组件,然后在提交时您可以直接访问子值。
希望这可以帮助。
推荐阅读
- java - 不使用 join() 和 java.util.concurrent 的数组的多线程求和
- php - 引导框对话框窗口不显示
- java - 如何设置休眠查询超时
- amazon-web-services - 向存储桶策略 s3 添加权限的问题
- flutter - 颤振评估 var 是整数还是字符串
- reactjs - 单击reactjs中的复制按钮时如何创建工具提示“复制到剪贴板”
- content-management-system - TYPO3 @dontverifyrequesthash
- arrays - 用 ruby 删除数组中的下一个元素
- django - Django 中基于类的视图的身份验证
- teradata - 如何以及选择哪一列作为 teradata 中的主索引