Reactjs 需要对对象文本进行注释的流
假设Reactjs 需要对对象文本进行注释的流,reactjs,react-jsx,flowtype,Reactjs,React Jsx,Flowtype,假设cx定义为: var cx = require('classnames'); …我有以下JSX代码: test: function(panelEnabled: boolean) { const klass = cx({disabled: !panelEnabled}); return (<div className={klass}>foo</div>); }, 我的问题是: 这一信息的原因和意义是什么 正确的处理方法是什么 为什么不清楚,如果pan
cx
定义为:
var cx = require('classnames');
…我有以下JSX代码:
test: function(panelEnabled: boolean) {
const klass = cx({disabled: !panelEnabled});
return (<div className={klass}>foo</div>);
},
我的问题是:
panelEnabled
是boolean
那么!panelEnabled
也是布尔值您似乎安装了错误版本的
classnames
定义文件
如果在定义文件中看到注释行
// flow-typed version: dc0ded3d57/classnames_v2.x.x/flow_>=v0.23.x_<=v0.27.x
这是我的index.js
// @flow
const cx = require('classnames');
const test = function(panelEnabled: boolean) {
const klass = cx({disabled: !panelEnabled});
return (<div className={klass}>foo</div>);
}
没有错误 可能是流错误?我已经安装了
Flow-typed
version2.0.0
。我想发生的事情是,当我把我的flow bin
版本从0.27.0
升级到0.35.0
时,我还应该做一个flow-typed安装——覆盖
(我没有这样做),因为根据我目前收集的信息,flow-typed
为package.json
中声明的flow-bin
版本获取适当的libdef。是吗?没错,flow-typed install
根据您的package.json获取适当的libdef,并根据您的flow-bin
依赖关系决定流的版本。因此,是的,您应该在碰撞flow-bin
依赖项之后运行flow-typed-install
。
test: function(panelDisabled: boolean) {
const klass = cx({disabled: panelDisabled});
return (<div className={klass}>foo</div>);
},
// flow-typed signature: 2dfd96b054f56a84f2d08769019d32d7
// flow-typed version: dc0ded3d57/classnames_v2.x.x/flow_>=v0.23.x_<=v0.27.x
type $npm$classnames$Classes =
string |
// We need both of these because if we just have the latter it won't accept objects typed
// explicitly as the former, due to mutation concerns.
{[className: string]: boolean } |
{[className: string]: ?boolean } |
Array<string> |
false |
void |
null
declare module 'classnames' {
declare function exports(
...classes: Array<$npm$classnames$Classes>
): string;
}
// flow-typed version: dc0ded3d57/classnames_v2.x.x/flow_>=v0.23.x_<=v0.27.x
{
"name": "flow-classnames",
"scripts": { "flow": "flow" },
"dependencies": {
"classnames": "^2.2.5"
},
"devDependencies": {
"flow-bin": "^0.35.0"
}
}
// @flow
const cx = require('classnames');
const test = function(panelEnabled: boolean) {
const klass = cx({disabled: !panelEnabled});
return (<div className={klass}>foo</div>);
}
npm install
flow-typed install
npm run flow