微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

formik渲染道具已被弃用,并将在以后的版本中弃用

如何解决formik渲染道具已被弃用,并将在以后的版本中弃用

我刚刚开始使用formik,并且我正在使用旧的代码库编写一些代码。 有了这段代码,我得到这个错误

            <Formik
              enableReinitialize={true}
              initialValues={InitialValues}
              onSubmit={(formData,formikProps) => this.handleSubmit(formData,formikProps)}
              render={formikProps => (
                  <View>
                      <FieldArray
                    name="address"
                    render={arrHelpers => (
                      <View>
                         
                        {formikProps.values.address &&
                          formikProps.values.address.length > 0 &&
                          formikProps.values.address.map((item,index) =>
                            this.renderForm(item,index,arrHelpers,formikProps)
                          )}
                      </View>
                    )}
                  />
                  <TouchableOpacity  onPress={formikProps.handleSubmit} style ={styles.buttonDown}>
                   <Text style={styles.submitButton}>Submit</Text>
                 </TouchableOpacity>
                  </View>
              )}
            />

解决方法

查看以下内容:https://formik.org/docs/migrating-v2#all-render-props-have-been-deprecated-with-a-console-warning

代替使用渲染道具,您可以将渲染函数作为子代传递(如上面的链接所示):

- <Field name="firstName" render={props => ....} />
+ <Field name="firstName">{props => ... }</Field>
,

仅关闭<Formik> ...props... </Formik>中的标签,而不放入Formik中的open标签。之后请注意,因为您不需要更多的“ render =“,而需要将“道具”放在括号内。

喜欢这个...

<Formik         
 enableReinitialize={true}
 initialValues={InitialValues}
 onSubmit={(formData,formikProps) => this.handleSubmit(formData,formikProps)}>
      {({formikProps}) => (
       <View>
          <FieldArray
           name="address"
           {({arrHelpers}) => (
              <View>                         
                {formikProps.values.address &&
                  formikProps.values.address.length > 0 &&
                  formikProps.values.address.map((item,index) =>
                    this.renderForm(item,index,arrHelpers,formikProps)
                  )}
              </View>
            )}
          />
          <TouchableOpacity  onPress={formikProps.handleSubmit} style={styles.buttonDown}>
           <Text style={styles.submitButton}>Submit</Text>
         </TouchableOpacity>
          </View>
      )}
 </Formik>

对于字段,使用与之前答案相同的方式。

在简历中,只需替换

<Formik render={(props) => ...} />   to   <Formik>{(props) => ...}</Formik>

另一个示例(更简单):

<Formik 
  
  onSubmit={onSubmit} 
  
  initialValues={{
      name: '',email: ''
    }}
    >
              
    {({ values }) => (
      <div className="container">
        <h1>Formulário Formik de exemplo</h1>
        <Form>
          <div>
            <label>Nome</label>
            <Field name="name" type="text" />
          </div>
          <div>
            <label>Email</label>
            <Field name="email" type="email" />
          </div>
          <button className="btnSubmit" type="submit">Save</button>
        </Form>
      </div>
    )}
 </Formik>

在此链接中:enter link description here,您可以获取有关此文件的文档。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。