Reactjs defaultProps正在抑制不正确的流错误消息
我有这样一个组件:Reactjs defaultProps正在抑制不正确的流错误消息,reactjs,flowtype,Reactjs,Flowtype,我有这样一个组件: // @flow import React from 'react'; type Props = { level: number, className: string, children: any, rest: any }; export const Heading = ({ level = 1, className, children, ...rest }: Props): React$Element<any> => {
// @flow
import React from 'react';
type Props = {
level: number,
className: string,
children: any,
rest: any
};
export const Heading = ({
level = 1,
className,
children,
...rest
}: Props): React$Element<any> => {
const Tag = `h${level}`;
return (
<Tag className={className} {...rest}>
{children}
</Tag>
);
};
Heading.displayName = 'Heading';
我得到:
17:const Tag=h${level}
^^^^^ undefined. This type cannot be coerced to const Tag =
`h${level}`; ^^^^^^^^^^^ string
这不是我所期望的情况。年,有人在向模板字符串传递布尔值时遇到了类似的错误。答案如下:
Flow试图帮助捕获意外的字符串强制转换,因此您只需要在这里用string(true)
来包装bool,以传达强制转换的明确意图
流对null
、boolean
或undefined
显示相同的行为。如果您将其中一个传递给模板字符串,它将对您大喊大叫
建议的解决方案是显式地将level
强制转换为字符串,如果它是故意
const标记=`h${String(level)}`;
…或者(更好)定义一个默认的道具,它在这个上下文中完全有意义,因为如果flow没有在这里抱怨,您将尝试呈现一个肯定不是您想要的
元素。因此,这并不是一个真正错误的消息。在中,有人在向模板字符串传递布尔值时遇到了类似的错误。答案如下:
Flow试图帮助捕获意外的字符串强制转换,因此您只需要在这里用string(true)
来包装bool,以传达强制转换的明确意图
流对null
、boolean
或undefined
显示相同的行为。如果您将其中一个传递给模板字符串,它将对您大喊大叫
建议的解决方案是显式地将level
强制转换为字符串,如果它是故意
const标记=`h${String(level)}`;
…或者(更好)定义一个默认的道具,它在这个上下文中完全有意义,因为如果flow没有在这里抱怨,您将尝试呈现一个肯定不是您想要的
元素。因此,这并不是一条错误消息。该错误消息中的标记有问题。我猜这是一个复制粘贴错误?你检查过我的答案了吗?错误消息中的标记有问题。我猜这是复制粘贴错误?你检查过我的答案了吗?
export const Heading = ({
level,
^^^^^ undefined. This type cannot be coerced to const Tag =
`h${level}`; ^^^^^^^^^^^ string