我使用Webpack用Flow类型构建我的React项目。我已经使用svg-sprite-loader将Webpack配置为导入SVG文件:
{
test: /\.svg$/,
loader: ['svg-sprite-loader']
}
这允许我“导入”SVG文件:
import letterCellSymbol from '../styles/icons/tool-letter.svg'
然后我可以使用我的React组件中的文件,如下所示:
<svg className="icon">
<use xlinkHref={`#${letterCellSymbol.id}`} />
</svg>
当然,这会导致Flow类型检查出现问题:
Error: src/components/Toolbox.jsx:70
70: <use xlinkHref={`#${letterCellSymbol.id}`} />
^^ property `id`. Property not found in
70: <use xlinkHref={`#${letterCellSymbol.id}`} />
^^^^^^^^^^^^^^^^ String
告诉Flow这些SVG文件是否导出{id: string}
类型的对象或完全忽略这些错误的正确方法是什么?
我编辑了我的.flowconfig
文件,包括:
[options]
module.name_mapper.extension='svg' -> '<PROJECT_ROOT>/src/helpers/SVGModule.js'
然后我创建了文件./src/helpers/SVGModule.js
并输入:
/* @flow */
export default { id: '' }
这使Flow认为以.svg
结尾的任何导入/必需文件都会导出{id:''}
,因此会忽略该错误。缺点是不存在的文件不会报告为错误。
帮助我解决这个问题的来源: