使用flow为反应原生中的无状态功能组件定义prop类型

时间:2018-03-08 12:09:01

标签: javascript reactjs react-native eslint flowtype

我目前正在使用flow和eslint来清理我们的代码库。

Eslint告诉您将无状态组件转换为无状态功能组件。但我还没有找到他们的道具如何正确输入流量的例子。这是我试过的:

原始组件:

type Props = {onPress : Function}

export default class MyButton extends React.Component <Props> {
  render() {
    ...  // use this.props.onPress
  }
}

版本1(我希望函数如何工作): 流程说Cannot create MyButton element because a callable signature is missing in props [1] but exists in function type [2].

const MyButton = (onPress: Function) => (
  return(
    ...  // use onPress
  )
}

版本2(见here): 在这里,eslint抱怨onPress无法找到。 ${onPress}也不起作用。 Flow抱怨:Missing type annotation for destructuring.

const MyButton = ({onPress: Function}) => (
  return(
    ...  // use onPress (or ${onPress} ??)
  )
}

那么我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您的版本2已关闭,但您无法在解构内定义类型;你必须定义整个对象类型。它看起来像这样

type Props = {
  onPress: Function
}
const MyButton = ({ onPress }: Props) => (
  return(
    ...
  )
}