javascript - 导出组件价值的正确方法是什么?
问题描述
我有一个由单个组件组成的动态生成的表单。表单可以包含每个组件的无限数量的实例。它是通过map()
ing 一个数组来定义的。
// main.js
function submitHandler() {
...
}
...
<form onSubmint={submitHandler}>
{formFields.map((item, index) => {
{{
'text': <UploadFormText name={someName} />,
'image': <UploadFormImage name={someName} />,
'video': <UploadFormVideo name={someName} />,
'file': <UploadFormFile name={someName} />,
}[item.type]}
})}
</form>
组件本身由带有value
属性的主文本字段和可能的辅助元素组成。通过value
直接输入或其他方式更改,然后useState()
在组件内使用钩子保存。
// component.js
export default function UploadFormText({ name }) {
const [text, setText] = useState('')
return (
<>
<input value={text} name={name} />
</>
)
}
我应该如何访问value
main.js 中的 component.js 来验证和提交它?如果有多种方法,哪种方法最简单,哪种方法最好?
解决方案
我会这样做
// main.js
function submitHandler() {
...
}
function getValue(value){ //fn that gets the value.
console.log(value);
}
<form onSubmit={submitHandler}>
{formFields.map((item, index) => {
{{
'text': <UploadFormText getValue={getValue} name={someName} />,
'image': <UploadFormImage name={someName} />,
'video': <UploadFormVideo name={someName} />,
'file': <UploadFormFile name={someName} />,
}[item.type]}
})}
</form>
像这样把它作为道具传递下去
// component.js
export default function UploadFormText({ name, getValue }) {
const [text, setText] = useState('')
return (
<>
<input onChange={getValue} value={text} name={name} />
</>
)
}
推荐阅读
- java - 下拉百里香叶 jpa
- c++ - 使用 execlp() 打印 pstree
- android - Android Studio:模拟器:进程以退出代码 -1073741819 (0xC0000005) 完成
- php - 匹配/提取两个字符串之间的所有字符
- c++ - 未找到 Qt 5.12 D3D 编译器模块
- windows - Wix Toolkit - MSI 安装程序 - 启动已安装的应用程序时,窗口的弹出窗口不断出现
- html - 浏览器缩小时使用 flexbox 缩小元素
- angular - Angular Reactive Form: - 在动态行中动态填充输入
- python - 用多行替换字符串,如果没有则替换为空白
- r - tidyr::unite 丢弃小数点 0