我创建了一个react native项目,并希望为我的项目启用流程。
我安装了流槽
npm install --save flow-bin
Run Code Online (Sandbox Code Playgroud)
但是,它返回
missing script: flow
Run Code Online (Sandbox Code Playgroud)
当我跑步时
npm run-script flow
Run Code Online (Sandbox Code Playgroud)
有人知道吗?谢谢!
刚开始使用Flow但似乎无法理解它是什么让我想要添加类型来解析对象,比如道具
即
render({ count }, { displayHelp }) {
Run Code Online (Sandbox Code Playgroud)
抛出一个错误
16: render({ count }, { displayHelp }) {
^^^^^^^^^ destructuring. Missing annotation
Run Code Online (Sandbox Code Playgroud)
当我添加注释时,它仍然会抱怨
17: render({ count: number }, { displayHelp }) {
^^^^^^^^^^^^^^^^^ destructuring. Missing annotation
Run Code Online (Sandbox Code Playgroud)
如果有人能指出的话,我显然在这里遗漏了一些非常简单的东西?
我无法弄清楚这是做什么甚至是什么.有人请你如此友善地指出我要研究什么?
circle: (null : ?{ setNativeProps(props: Object): void }),
Run Code Online (Sandbox Code Playgroud)
它是React Native示例的一部分,是React Native类定义的一部分.外部部分是(缩写):
var NavigatorIOSExample = React.createClass({
...
circle: (null : ?{ setNativeProps(props: Object): void }),
...
});
Run Code Online (Sandbox Code Playgroud)
我认为这是三元运算符的一些棘手使用.一个匿名函数.但?
资料来源:https://facebook.github.io/react-native/docs/panresponder.html
我有一个反应的官能组件,它采用一个List作为道具。
const Dashboard = (props: { items: List } = { items: List() }) => {
const { items } = props
...
})
Run Code Online (Sandbox Code Playgroud)
但是,itemsin const { items } = props会产生以下错误:
error 'items' is missing in props validation react/prop-types
在流动型的文档举个例子:
ES2015功能设定参数必须出现在参数的类型标注后的默认值:
函数foo(P1:T1 = V):U {..}
但它不是真的我清楚如何适用对象
我正在尝试扩展我从外部库导入的流类型,如下所示:
import type { $Request, $Response } from 'express';
export type Req extends $Request {
additionalField: {
key: string
}
};
Run Code Online (Sandbox Code Playgroud)
这不起作用,但我想知道在Flow中是否还有另一种方法可以实现这一点.我需要一个继承先前类型的新类型,并且还有更多属性.
我在这里搜索与redux一起使用flow的方法时找到了代码示例:https://flow.org/en/docs/frameworks/redux/
特殊的语法是(action:empty); 它只是一些流魔法,只是在switch语句的默认情况下使用,还是有其他用途?
它看起来像没有返回值类型的不合适的函数类型语句但是带有奇怪类型'empty'的参数,我找不到文档.
// @flow
type State = { +value: boolean };
type FooAction = { type: "FOO", foo: boolean };
type BarAction = { type: "BAR", bar: boolean };
type Action = FooAction | BarAction;
function reducer(state: State, action: Action): State {
switch (action.type) {
case "FOO": return { ...state, value: action.foo };
case "BAR": return { ...state, value: action.bar };
default:
(action: empty);
return state;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用React的PropTypes和Flow类型检查器,但是我无法获得可选的函数prop来传递类型检查.这是一个例子:
var Example = React.createClass({
propTypes: {
exampleFn: React.PropTypes.func
},
handleClick: function() {
if (this.props.exampleFn) {
this.props.exampleFn();
}
},
render: function() {
return <a onClick={this.handleClick}>Click here</a>;
}
});
Run Code Online (Sandbox Code Playgroud)
虽然我检查this.props.exampleFn不是null,但是对这个代码运行Flow的类型检查器会给我错误
call of method exampleFn
Function cannot be called on possibly null or undefined value
Run Code Online (Sandbox Code Playgroud)
我试过,例如不同的变化
if (this.props.exampleFn !== null && this.props.exampleFn !== undefined) {...}
或
this.props.exampleFn && this.props.exampleFn()
等知道我们正在防范可能为null /未定义的值,但我无法找到任何工作.当然,改变道具类型会React.PropTypes.func.isRequired导致没有错误,但我想保持这个道具是可选的.
如何通过类型检查获得可选的函数prop?
示例 https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/PanResponderExample.js#L41
var PanResponderExample = React.createClass({
...
circle: (null : ?{ setNativeProps(props: Object): void })
...
Run Code Online (Sandbox Code Playgroud)
我不知道这是什么意思 circle: (null : ?{ setNativeProps(props: Object): void })
谢谢你的建议.
flowtype ×8
javascript ×5
react-native ×3
reactjs ×3
eslint ×1
inheritance ×1
npm ×1
preact ×1
redux ×1