代码之家  ›  专栏  ›  技术社区  ›  que1326

React final form不使用typescript

  •  0
  • que1326  · 技术社区  · 6 年前

    react final form 在react typescript环境中。 我得到了一个我丢失的错误“ 提交 窗体道具

    我的文件.tsx

    import * as React from 'react';
    import { Form, Field } from 'react-final-form';
    
    export default class MyComponent extends React.Component {
      constructor(props: any) {
        super(props);
    
        this.onSubmitHandler = this.onSubmitHandler.bind(this);
        this.validateHandler= this.validateHandler.bind(this);
      }
    
       onSubmitHandler(): void {
       }
    
       validateHandler(): void {
    
       }
    
      render(): React.ReactNode {
        return (
          <div>
            <Form>
              onSubmit={this.onSubmitHandler} // OK
              validate={this.validateHandler}
              render={ ( {handleSubmit, pristine, invalid} ) => (
                  <form onSubmit={handleSubmit}>
    
    
                    <button type="submit" disabled={pristine || invalid}>
                      Submit
                    </button>
                  </form>
               )}
            </Form>
          </div>
        );
      }
    }
    

    索引d.ts(最终形式) -FormProps=>配置=>。。。提交

    export const Form: React.ComponentType<FormProps>;
    
    export interface FormProps extends Config, RenderableProps<FormRenderProps>{
      subscription?: FormSubscription;
      decorators?: Decorator[];
      initialValuesEqual?: (a?: object, b?: object) => boolean;
    }
    
    export interface Config<FormData = object> {
      debug?: DebugFunction
      destroyOnUnregister?: boolean
      initialValues?: object
      keepDirtyOnReinitialize?: boolean
      mutators?: { [key: string]: Mutator }
      onSubmit: (
        values: FormData,
        form: FormApi,
        callback?: (errors?: object) => void
      ) => object | Promise<object | undefined> | undefined | void
      validate?: (values: object) => object | Promise<object>
      validateOnBlur?: boolean
    }
    

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  2
  •   Pavindu    6 年前

    应该在元素的开始标记内提供道具。更改 render

    render(): React.ReactNode {
      return (
        <div>
          <Form 
            onSubmit={this.onSubmitHandler} // OK
            validate={this.validateHandler}
            render={ ( {handleSubmit, pristine, invalid} ) => (
              <form onSubmit={handleSubmit}>
                <button type="submit" disabled={pristine || invalid}>
                  Submit
                </button>
              </form>
            )}>  
          </Form>
        </div>
      );
    }
    
    推荐文章