- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下代码在使用 TypeScript 编译时会抛出错误。
import React, { SFC } from "react"
import { Link } from "react-router-dom"
import { HashLink } from "react-router-hash-link"
import MarkdownToJSX from "markdown-to-jsx"
interface AnchorProps {
baseUrl: string
relativeUrl: string
href: string
}
const Anchor: SFC<AnchorProps> = function(props) {
/*
FYI, props.baseUrl and props.relativeUrl is used by code I didn’t include in
this example to keep things simple.
*/
if (
props.href.match(/^http(s)?:\/\//) ||
props.href.match(/^mailto:/) ||
props.href.match(/^tel:/)
) {
return (
<a href={props.href} rel="noopener noreferrer" target="_blank">
{props.children}
</a>
)
} else if (props.href.match(/^#/)) {
return (
<HashLink to={props.href} smooth>
{props.children}
</HashLink>
)
} else {
return <Link to={props.href}>{props.children}</Link>
}
}
const Markdown = function() {
return (
<MarkdownToJSX
options={{
overrides: {
a: {
component: Anchor,
props: {
baseUrl: "/privacy-guides",
relativeUrl: "",
},
},
},
}}
>
# This is [markdown](markdown)
</MarkdownToJSX>
)
}
export default Markdown
/Users/sunknudsen/Sites/sunknudsen/sunknudsen-website/src/Test.tsx
TypeScript error in /Users/sunknudsen/Sites/sunknudsen/sunknudsen-website/src/Test.tsx(40,13):
No overload matches this call.
Overload 1 of 2, '(props: Readonly<MarkdownProps>): Markdown', gave the following error.
Type 'FunctionComponent<AnchorProps>' is not assignable to type 'string | SFC<{}> | ComponentClass<{}, any>'.
Type 'FunctionComponent<AnchorProps>' is not assignable to type 'SFC<{}>'.
Types of parameters 'props' and 'props' are incompatible.
Type '{ children?: ReactNode; }' is not assignable to type 'PropsWithChildren<AnchorProps>'.
Type '{ children?: ReactNode; }' is missing the following properties from type 'AnchorProps': baseUrl, relativeUrl, href
Overload 2 of 2, '(props: MarkdownProps, context?: any): Markdown', gave the following error.
Type 'FunctionComponent<AnchorProps>' is not assignable to type 'string | SFC<{}> | ComponentClass<{}, any>'.
Type 'FunctionComponent<AnchorProps>' is not assignable to type 'SFC<{}>'. TS2769
38 | overrides: {
39 | a: {
> 40 | component: Anchor,
| ^
41 | props: {
42 | baseUrl: "/privacy-guides",
43 | relativeUrl: "",
我不明白为什么。
最佳答案
这似乎是 markdown-to-jsx
类型定义的限制。
具体来说,MarkdownToJSX.options.overrides
是ComponentOverride
类型,ComponentOverride
是这个类型:
export type ComponentOverride = string | React.ComponentClass | React.SFC | {
component: string | React.ComponentClass | React.SFC;
props?: any;
};
该类型不允许您将泛型参数传递给 React.SFC
,这意味着它采用其默认泛型参数:
type SFC<P = {}> = FunctionComponent<P>;
该默认通用参数是一个空对象 {}
。
由于您的代码试图将 AnchorProps
类型分配给空对象类型,因此编译器会报错。
这是否会成为运行时的问题取决于底层 JavaScript 在运行时的工作方式。像这样转换可能没问题:
const Markdown = function() {
return (
<MarkdownToJSX
options={{
overrides: {
a: {
component: Anchor,
props: {
baseUrl: "/privacy-guides",
relativeUrl: ""
}
// We have tested that this works at runtime,
// we we know more than the compiler knows.
} as ComponentOverride
}
}}
>
# This is [markdown](markdown)
</MarkdownToJSX>
);
};
关于reactjs - 为什么类型 SFC<AnchorProps> 不能分配给类型 SFC<{}>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60382399/
以下代码在使用 TypeScript 编译时会抛出错误。 import React, { SFC } from "react" import { Link } from "react-router-d
我正在向我们的 vue 代码库添加单元测试,发现很难测试元素的可见性。 我照常渲染组件,并按照测试库文档示例中的建议进行渲染,但样式未应用于 DOM 调试(使用 screen.debug)。有什么线索
我有一个 R sf 对象: library(sf) library(magritr) g1 = structure(list(ele = c(1819.80249, 1821.150879, 1825
我们的产品有多个客户,每个客户都有自己的客户特定修改。 有没有办法在 SFC 的 Vue2 模板中根据构建环境变量在构建时有条件地包含或排除其他组件? 看起来我可以使用类似 webpack-condi
假设 t是: t t Geometry set for 2 features geometry type: POLYGON dimension: XY bbox: x
我正在编写一个 powershell 脚本,其中多个命令输出显示在窗口中并附加到文件或变量中。在我使用 sfc 命令之前它工作正常。当通过管道传输或重定向时,输出是“损坏的”: > sfc /? Vé
我用过 ReactDOM.createPortal在有状态组件的 render 方法中,如下所示: class MyComponent extends Component { ...
我是新来的,我想写一个执行命令的C++源代码: sfc.exe /scannow 但它不起作用。 Windows 资源保护无法启动修复服务。 我是一名学生,我上 10 年级,我在学校没有计算机科学,所
每当我向我的 SFC ~home.vue 中的 html 添加一行额外的 html 时,我都会收到此错误。请参阅以下错误: > webpack --mode development Hash: 1e4
我的问题如下:在 chrome devtools 中调试时将鼠标悬停在变量上,这就是我得到的: 在开发工具控制台中: 有人知道为什么会这样吗?这真的很烦人,因为使调试过程更加麻烦!!!有什么解决办法吗
我有一个遗留项目,想通过 CDN 开始使用 Vue.js 单文件组件。我确实遇到了一些插件,例如 https://github.com/FranckFreiburger/vue3-sfc-loader
所以问题是我有一列“位置”,它是一个列表列表。嵌套列表的长度为 2,并且在索引 1 处都有一个点的纬度值,在索引 2 处都有一个点的经度值。因为我想从本专栏创建一个 sfc 对象,所以我考虑将每个嵌套
我处于这样一种情况,我必须在法律上将版权声明添加到我的文件顶部,同时我知道如何在 template 中发表评论。 , script或 style ,我找不到关于如何在这些之外执行此操作的文档。 根据文
我正在使用 Laravel 5.8 和 Vue 2.6,并尝试在我的单个文件组件中使用图像文件的相对路径。我已查看 How to import and use image in a Vue singl
我有两种使用我的应用程序的模式,一种是嵌入式模式,一种是非嵌入式模式。对于嵌入式(想想 iframe)模式,我不想显示站点页眉和页脚。我尝试在 App.vue 中使用 v-if 和 v-else,但
我正在尝试将上下文传递到 SFC,如 react docs 中所述,但是 typescript 对此很生气。我转载了the issue on codesandbox.io ,并在下面内联了相关信息。所
我正在做一个应用程序,我需要在 Vue JS 的单个文件组件中提取样式标记内的 CSS。 所以我有这个基本模板: export default { name: 'Hel
我有一个 react 函数,我正在传递一个对象数组作为 Prop 。当组件渲染时,该数组被嵌套到同名的对象中。 为什么要嵌套?我可以做些什么来将其强制返回数组吗? 这是代码(以及笔的链接( https
因此,您可以指定类型 React.FC到一个变量,以便将其理解为 React 无状态功能组件,如下所示: //Interface declaration interface ButtonProps {
我有一个 vue/sfc/webpack/vue-loader 应用程序,我直接在 SFC 中使用 Bootstrap (通过“导入”)和组件样式。现在,vue-loader 总是在组件样式之后包含
我是一名优秀的程序员,十分优秀!