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]?