Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 福基姆';s innerRef将在每次更改表单中的字段时更新_Javascript_Reactjs_Formik - Fatal编程技术网

Javascript 福基姆';s innerRef将在每次更改表单中的字段时更新

Javascript 福基姆';s innerRef将在每次更改表单中的字段时更新,javascript,reactjs,formik,Javascript,Reactjs,Formik,我是新来的福米克,我有一个非常恼人的问题,我坚持了好几天。所以基本上我有一个父组件,其中有一个代码如下: const refs=[] {data.map((v,i) => <Child formikRef={refs}}/> )} const refs=[] {data.map((v,i)=> )} 我的子组件使用formik: ... <Formik innerRef={i => props.formikRef.push(i)} ....../>

我是新来的福米克,我有一个非常恼人的问题,我坚持了好几天。所以基本上我有一个父组件,其中有一个代码如下:

const refs=[]
{data.map((v,i) =>
<Child formikRef={refs}}/> )} 
const refs=[]
{data.map((v,i)=>
)} 
我的子组件使用formik:

...
<Formik
innerRef={i => props.formikRef.push(i)}
....../>
。。。
props.formikRef.push(i)}
....../>

因此,我的子组件在父组件中渲染了几次,我需要跟踪父组件中每个组件的值。更清楚地说,当我单击位于父组件中的按钮时,我需要获得每个组件的值(我需要将数据从子组件传递到父组件)。这就是我使用innerRef的原因。问题是,我正在使用一个引用数组来跟踪每个渲染的值,并且每次我更改表单中的字段时,都会在数组中添加一个新值,因此数组中的元素远远多于我应该拥有的元素。我认为innderRef是在每次更改字段时触发的,而不是仅在提交时触发。我怎样才能解决这个问题?请提供帮助。

您可以像下面这样尝试,这里我们将索引值传递给子组件,以使Formik ref位于同一位置

const refs=[]

{data.map((v,i) =>
    <Child index={i} formikRef={refs}}/> 
)} 

<Formik
    innerRef={props.formikRef[props.index]}
/>
const refs=[]
{data.map((v,i)=>
)} 

您可以这样尝试,const refs=React.useRef([]){data.map((v,i)=>)}props.formikRef.current.push(i)}/>谢谢您的回答,但我仍然有同样的问题trick可能是props.formikRef.current[i]=i}/>,请注意,不是Array.prototype.push,而是在每个索引上分配值。这里的问题是,我这里是一个对象,所以它不工作,我只有最后一个形式的值。可能有另一种方法来设置索引,而不是当前的[i]?