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

尽管输入了数据,但仍会触发 Formik 验证错误

如何解决尽管输入了数据,但仍会触发 Formik 验证错误

只有在必填字段中没有数据时才会显示验证错误。但无论出于何种原因,错误总是会显示出来。我也使用过“touched”和“setFieldTouched”道具,但到目前为止没有运气。非常感谢任何帮助。

这是我的 Yup 验证方案:

const validationSchema = Yup.object().shape({
    title: Yup.string().required().label("Title"),price: Yup.number().required().label("Price"),});

还有我的 Formik 表格:

<Formik
   validationSchema={validationSchema}
   initialValues={{ title: '',price: '' }}
   onSubmit={(values,actions) => {
      actions.resetForm();
      console.log(values);
   }}
>
   {(props) => (
      <View>
         <ScrollView style={styles.scrollView}>
            <TextInput
               onBlur={()=>props.setFieldTouched("title")}
               style={styles.textInput} placeholder='title'
               onChangeText={(title)=>this.setState({title: title})}
               value={this.title} />
            
            {props.touched.title && <Text style={{ color: 'red',alignSelf: 'center'}}>{ props.errors.title}</Text>}
                            
            <TextInput
               onBlur={()=>props.setFieldTouched("price")}
               style={styles.textInput} placeholder='price'
               onChangeText={(price)=>this.setState({price: price})}
               value={this.price}
               keyboardType='numeric' />
           { props.touched.price && <Text style={{ color: 'red',alignSelf: 'center'}}>{ props.errors.price}</Text>}
        </ScrollView>
      </View>
   )}
</Formik>

结果截图如下:

enter image description here

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

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?