【发布时间】:2021-10-23 13:42:49
【问题描述】:
我在表单中有一个标签部分,我正在从另一个名为 <StackTag/> 的组件中呈现标签 div,我在该组件中有一个标签状态数组。在我的表单 onSubmit 中,我正在创建表单数据的对象。我无法从<StackTag> 访问标签数组并将标签推送到我的表单对象中。
const [tags, setTags] = useState([]);
...
<input
type='text'
onKeyDown={handleTag}
onChange={handleTag}
value={currentTagText}
placeholder='Type your interests here'
/>
</div>
<div className={classes.stacktags}>
{tags.map((tag, index) => {
return (
<div className={classes.stackInput} key={index}>
{tag}
<button
onClick={() => removeTag(index)}
className={classes.tagCloseBtn}
>
x
</button>
在我的表单组件中,
<div className={classes.interestDiv}>
<label htmlFor='skills'>Skills</label>
<StackTag />
</div>
在我的控制台中,我可以看到<StackTag/> 的状态,我可以看到带有标签的数组,它正在工作,我尝试了不同的方法但我无法弄清楚,我正在使用 react-hook-form使用 const 获取表单数据
{ register, handleSubmit } = useForm();
const [result, setResult] = useState('');
...
{...register('name')}
如何将标签添加到我的结果对象?
【问题讨论】:
-
您是否将 onSubmit 添加到表单组件中?
-
StackTag的组件状态是“私有的”,因为其他 React 组件不能直接进入并访问它,这会破坏许多抽象。将回调道具传递给StackTag以将其状态传递出去,或者将tags状态移出到父组件并将tags和回调作为道具传递。见Lifting State Up。 -
Yes onSubmit 在我的表单组件中,
<StackTag/>在表单中。
标签: javascript reactjs forms components react-forms