如何为redux-form的Field包装器添加类型

时间:2018-02-05 20:07:47

标签: redux-form flowtype

我有这个组件。

//@flow
import React from 'react'
import { Field } from 'redux-form'
import type { FieldProps } from 'redux-form';
import TextField from 'material-ui/TextField'

const renderField= ({ input, label, disabled, meta: { touched, error } }: FieldProps) => {
  //component defn
}

export const InputField = (props) => {
  return (
    <Field
      {...props}
      component={renderField}
    />
  )
}

输入字段接受所有道具,redux-form字段接受加上自定义道具。 问题是如何为InputField流动我的道具? redux-forms index.js.flow导出renderField(FieldProps)的类型,但它不导出Field组件的类型。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您可以使用React.ElementPropsimport type { ElementProps } from 'react'或将您的反应导入更改为import * as React from 'react')。

然后你可以做类似的事情:

type OGFieldProps = React.ElementProps<typeof Field>
type Props = $Diff<OGFieldProps, { component: $PropertyType<OGFieldProps, 'component'> }>

我正在做差异的原因是因为否则你必须传递组件,但是因为你已经在你的InputField中做了,你可能不希望有人在思考时传递一个它会覆盖。