我正在使用Formik的Field组件来渲染这样的输入:
<Formik
initialValues={initialValues}
onSubmit={onSubmit}
render={formProps => (
<Form>
<Field name="lastName" render={({ field, form }) => (
<input {...field} placeholder="lastName" />
)} />
</Form>
)} />
这是一个说明问题的CodeSandbox.您将看到是否将产品列定义与仅将产品呈现为字符串而不是使用Formik输入的产品列定义交换,它可以正常工作.
在上面的代码中,Formik似乎是“自动地”确定Field的渲染功能中的Formik包形式对象.
在我将Field集成到第三方库中之前,这一点没有问题,在我的情况下,将它呈现在agGrid表的单元格中.当我这样做时,我得到TypeError:this.props.formik.registerField不是函数浏览器控制台错误.调试此错误,我在Formik的编译代码中看到以下内容:
FieldInner.prototype.componentDidMount = function () {
this.props.formik.registerField(this.props.name, this);
};
当我检查this.props.formik应该是我的Formik包时,它是一个空对象.这与我在Field的渲染功能中使用断点时看到的对象相同.当我在agGrid之外检查这个对象的Field的实例时,它是完全填充的Formik包,包括initialValue props,registerField函数等.
当我的Field嵌套在agGrid表格单元格中时,为什么Formik无法正确检索Formik包形式对象?如何解决此问题?
解决方法:
您使用的是React> = 16的版本吗?如果是这样,看起来AgGridReact不支持Formik在幕后使用的新版本的上下文API.
https://github.com/ag-grid/ag-grid-react/issues/131
要么等待AgGridReact发布新版本,要么考虑降级到React< 16的版本,以便Formik回退到旧的上下文api.
标签:javascript,reactjs,formik 来源: https://codeday.me/bug/20190522/1152421.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。