繁体   English   中英

Redux 表单道具和打字稿

[英]Redux form props & typescript

找了很多年,没有找到值得的东西。

当我使用 flow 时,我可以简单地:

import { type FieldProps, FormProps } from 'redux-form';

是否有类似(并且那么简单)的方法可以在打字稿中将道具正确设置为 redux 形式?

文档没有提到打字稿,只有一个页面用于流打字。

但是,我发现我可以从 redux-form 导入类似propTypes东西:

import { reduxForm, propTypes } from 'redux-form'

但是 - redux-form没有导出propTypes类的propTypes ,所以文档有点被弃用了。

链接: https : //redux-form.com/7.2.1/docs/api/props.md/

在此先感谢您的任何帮助。

tl;dr class RegistrationForm extends React.PureComponent<any> {
                                      what to drop here ^^^^^                                            

您需要使用包管理器安装@types/redux-form包。 @types/redux-form包包括用于类型定义redux-form封装。

然后你可以从redux-form导入类型定义,例如InjectedFormProps

您将使用reduxForm()包装的reduxForm()应该具有扩展InjectedFormProps<FormData = {}, P = {}>道具。

reduxForm()类型是通用的reduxForm<FormData = {}, P = {}>(...

看例子:

import * as React from 'react';
import { reduxForm, InjectedFormProps, Field } from 'redux-form';

import { IUser } from './index';

interface IProps {
  message: string;
}

class UserForm extends React.Component<InjectedFormProps<IUser, IProps> & IProps> {
  render() {
    const { pristine, submitting, reset, handleSubmit, message } = this.props;
    return (
      <form onSubmit={handleSubmit}>
        <div>{message}</div>
        <div>
          <label>First Name </label>
          <Field
            name="firstName"
            component="input"
            type="text"
            placeholder="First Name"
          />
        </div>
        <div>
          <label>Last Name </label>
          <Field
            name="lastName"
            component="input"
            type="text"
            placeholder="Last Name"
          />
        </div>
        <div>
          <button type="submit" disabled={pristine || submitting}>
            Submit
          </button>
          <button type="button" disabled={pristine || submitting} onClick={reset}>
            Clear Values
          </button>
        </div>
      </form>
    );
  }
}

export default reduxForm<IUser, IProps>({
  form: 'userForm',
})(UserForm);

编辑 Redux 表单 + Typescript 示例

@types/redux-form包的源代码位于这里 您可以在用于类型检查的redux-form-tests.tsx文件中查看那里的类型和更复杂的示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM