reactjs - 无法在 Fable 中引用 React
问题描述
我正在尝试使用 Fable 在 F# 中编写一个 React 组件,但在引用必要的库时遇到了麻烦。我得到的编译错误是:
- 未定义命名空间“React”。(“公开”陈述)
- PureStatelessComponent 类型未定义。
这是我的代码
module ContactInfoComponent
open Fable.Core
open Fable.Core.JsInterop
open Fable.Import
open Fable.Import.Browser
open Fable.React
open Fable.React.Helpers
type ContactInfoProps = {
Name : string
}
type ContactInfoComponent(initialProps) =
inherit PureStatelessComponent<ContactInfoProps>(initialProps)
override this.render() =
div [] [
str "Name: "
input [Type "text" Id "txtName"]
]
这是我在 package.json 中的依赖项:
"devDependencies": {
"webpack": "^4.42.0",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.10.3"
},
"dependencies": {
"@babel/core": "^7.8.7",
"fable-compiler": "^2.4.18",
"fable-loader": "^2.1.8",
"fable-core": "^0.7.30",
"fable-powerpack": "0.0.20",
"fable-react": "^0.8.6",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"webpack": "^4.42.0",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.10.3"
}
<ItemGroup>
<Reference Include="node_modules/fable-core/Fable.Core.dll" />
<Reference Include="node_modules/fable-powerpack/Fable.PowerPack.dll" />
<Reference Include="node_modules/fable-react/Fable.React.dll" />
<PackageReference Include="Fable.Browser.Dom" Version="1.0.0" />
</ItemGroup>
我能做些什么来解决这些编译错误?
解决方案
我建议改用 NuGet 版本,就像您对 Fable.Browser.Dom 所做的那样。——马克·帕蒂森
正确的!我通过在我的 .csproj 文件中添加 NuGet 包引用解决了这个问题:
<ItemGroup>
<PackageReference Include="Fable.Core" Version="3.1.5" />
<PackageReference Include="Fable.Browser.Dom" Version="1.0.0" />
<PackageReference Include="Fable.React" Version="6.2.0" />
<PackageReference Include="Fable.PowerPack" Version="3.0.0" />
</ItemGroup>
</Project>
现在我要看看是否可以从 package.config 中删除这些引用。我认为我的 F# 代码实际上并没有引用 node_modules 文件夹中的 DLL。
推荐阅读
- inkscape - 如何在 Inkscape 中定义 .inx 参数的最大值以依赖于其他参数
- java - 使用套接字来自服务器的实时数据
- asp.net - 在 Aspx 页面中使用 Angular
- c# - C#反序列化xml获取元素值
- javascript - RxJS 等待上一次执行完成
- microsoft-teams - 在 Microsoft 团队中设置选项卡时出错
- ios - 如何在不使用 Any BaseUIViewController 的情况下禁用所有 UIViewController 的暗模式?
- regex - 使用 import re [regex] 仅提取数字并在其间放置逗号
- java - 如何以不同的方法调用全局数组列表
- android - BILLING_RESPONSE_RESULT_ERROR android 在应用程序购买 AIDL?