一、说明



下载地址:
https://codesandbox.io/s/zKrK5YLDZ

案例Basics主要介绍Formik的基本用法,我想在前面几篇的基础上着重分析一下其核心API及数据结构的使用思路。

二、示例架构

我的开发环境为MAC+WebStorm(2017.2) ,案例Basics的架构如下图所示:
Formik官方应用案例解析(一)Basics_第1张图片

工程的运行前,需要先安装系统有关依赖:
npm install

然后,编译运行:
npm start

运行结果如codesandbox.io上的结果一致:
Formik官方应用案例解析(一)Basics_第2张图片

三、核心文件主要组成

本示例核心文件主要是index.js,其主要代码架构如下四部分组件:

// 一)、必要的import依赖导入
import './helper.css';
import { MoreResources, DISPLAY_FORMIK_STATE } from './helper';

import React from 'react';,
import { render } from 'react-dom';
import { withFormik } from 'formik';
import Yup from 'yup';

// 二)、表单组件定义,后面将使用Formik({..}) API进一步包装
const MyInnerForm = props => {
  const {
    ......
  } = props;
  return (
    
......
); }; //三)、使用Formik进一步包装上面定义的表单组件 const EnhancedForm = withFormik({ ...... })(MyInnerForm); const App = () => (
......
); //四)、表单渲染到结果设备 render(, document.getElementById('root'));

四、示例代码详解

(一)表单组件定义

第一部分关键代码是表单组件定义,如下所示:

const MyInnerForm = props => {
  const {    values,    touched,    errors,    dirty,    isSubmitting,handleChange,    handleBlur,    handleSubmit,    handleReset,  } = props;
  return (
    
{errors.email && touched.email &&
{errors.email}
} ); };

表单定义使用了ES6箭头函数语法格式。看起来,从

元素到