在一个组件中使用 formik-material-ui TextField 和 material-ui TextField 时出现“警告:Prop `className` 不匹配...”

Posted

技术标签:

【中文标题】在一个组件中使用 formik-material-ui TextField 和 material-ui TextField 时出现“警告:Prop `className` 不匹配...”【英文标题】:"Warning: Prop `className` did not match..." when use formik-material-ui TextField and material-ui TextField in one component 【发布时间】:2021-11-14 00:27:13 【问题描述】:

当我在一个组件中使用 formik-material-ui TextField 和原始 material-ui TextField(通过 fieldToTextField 函数绑定到 Formik)时,我有一个警告

道具类名不匹配。服务器:“PrivateNotchedOutline-legendLabelled-11 PrivateNotchedOutline-legendNotched-12”客户端:“PrivateNotchedOutline-legendLabelled-7 PrivateNotchedOutline-legendNotched-8”。

仅当组件的 variantoutline 时才会显示此警告。

这是一个产生警告的例子。

//Form.jsx
import React from 'react'
import  TextField  from 'formik-material-ui'
import TextFieldFormik from '../TextFieldFormik.jsx'
import  Formik, Form, Field  from 'formik'

export default function MyForm(props) 
  return (
    <Formik
      enableReinitialize
      initialValues= first: 'first', second: 'second' 
      onSubmit=(values,  setSubmitting ) => 
        console.log(values)
      
    >
      ( submitForm, isSubmitting, errors, touched, values ) => 
        return (
          <Form>
            <Field
              component=TextField //This is a formik-material-ui TextField
              name="first"
              variant="outlined"
              fullWidth
              label="first"
            />

            <Field
              component=TextFieldFormik //This is a material-ui text field bound to Formik with fieldToTextField function
              name="second"
              variant="outlined"
              fullWidth
              label="second"
            />
          </Form>
        )
      
    </Formik>
  )

//TextFieldFormik.jsx
import React from 'react'
import TextField from '@material-ui/core/TextField'
import  fieldToTextField  from 'formik-material-ui'

export default function TextFieldFormik(props) 
  return <TextField ...fieldToTextField(props) />

我的配置:

“下一个”:“^11.1.0”, “反应”:“^17.0.2”, “react-dom”:“^17.0.2” “@material-ui/core”:“^4.11.4”, "formik": "^2.2.9", “formik-material-ui”:“^4.0.0-alpha.1”

【问题讨论】:

【参考方案1】:

TextFieldFormik.jsx 文件中的import TextField from '@material-ui/core/TextField' 更改为import TextField from '@material-ui/core' 解决了该问题。

【讨论】:

以上是关于在一个组件中使用 formik-material-ui TextField 和 material-ui TextField 时出现“警告:Prop `className` 不匹配...”的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一个组件中使用来自组件的表单

有没有办法在另一个组件中使用可变 Angular 组件,并将数据传递给该可变组件?

在不同组件中使用相同的对象数组,如果对一个对象进行任何更新,将在角度 8 中显示其他组件中的更新

ReactJs - 如何在一个组件中使用多个子组件

如何在 Ember 的组件中使用组件

在 Angular 8 中,如何将一个组件传递给另一个组件的输入,然后在路由器模块中强制使用它