Reactjs 为第三方组件添加的道具声明流类型
我使用Victory JS在React中创建图表。Victory有一个名为Reactjs 为第三方组件添加的道具声明流类型,reactjs,flowtype,Reactjs,Flowtype,我使用Victory JS在React中创建图表。Victory有一个名为的组件,它可以携带一个名为labelComponent的道具,我正在传递该道具 例如: 问题是我正在使用Flow进行类型检查,并且VictoryBar向添加了道具。这是我的BarLabel道具类型和组件本身。我在评论中解释了这个问题 类型BarLabelProps={ 样式?:对象, x?:数字, y0?:数字, //问题就在这里。当基准是可选的时,我得到了流量误差 //该props.datum.name无效,因为无法
的组件,它可以携带一个名为labelComponent
的道具,我正在传递该道具
例如:
问题是我正在使用Flow进行类型检查,并且VictoryBar
向
添加了道具。这是我的BarLabel道具类型和组件本身。我在评论中解释了这个问题
类型BarLabelProps={
样式?:对象,
x?:数字,
y0?:数字,
//问题就在这里。当基准是可选的时,我得到了流量误差
//该props.datum.name无效,因为无法从中访问.name
//可能是空值。当需要时(没有问号),我会得到一个错误
//因为当我将组件传递给它时,它不包含
//直到VictoryBar做它的事之前,道具数据。
基准面:对象,
};
功能条形标签(道具:BarLabelProps){
返回(
{props.datum.name}
);
}
flow文档给出了一个在高阶函数上指定道具的示例,但对我的场景没有帮助我如何告诉flow这些道具是通过
VictoryBar
添加的?要支持项目中第三方库的流类型,您可以使用该模块。他们的安装说明说要进行全局安装,例如warn global add flow typed
或npm install-g flow typed
现在,Victory已经安装了这个模块,您需要创建一个存根来删除您正在使用的Victory版本的流错误。这可以通过流类型创建存根命令完成,例如:
flow-typed create-stub victory@^30.3.0
这将生成将流类型声明到/Flow-typed
目录中的文件。这将删除与Victory相关的任何流错误。您可以了解有关声明流类型的更多信息
一般来说,对于第三方库,最好查看流类型是否已经存在,此时可以安装它们。这可以通过流式安装
命令完成,例如
flow-typed install bson@^1.0.0
对于现有的流类型,您还可以将声明从复制并粘贴到项目的/Flow-typed
目录中。这是一个有趣的问题。我对React和Flow的特例不是很有经验,但我认为目前还没有一种方法可以对此进行建模。@Pizza-r0b,你想为此推出一个复制回购/代码沙盒吗?我很想帮忙,但我有点懒,不想把整个事情安排好