相关疑难解决方法(0)

对于反应儿童来说,正确的打字稿类型是什么?

我正在尝试正确输入映射子组件的道具:

type Props = {
    children: any
}

const MyComponent: FunctionComponent<Props> = () => (React.Children.map(children, someMapingFunction);
Run Code Online (Sandbox Code Playgroud)

我一直在用JSX.Element,但感觉不太对劲。

children typescript reactjs typescript-typings react-props

20
推荐指数
1
解决办法
2万
查看次数

从'react'导入*作为React; vs从'react'导入React;

我注意到React可以这样导入:

import * as React from 'react';
Run Code Online (Sandbox Code Playgroud)

...或像这样:

import React from 'react';
Run Code Online (Sandbox Code Playgroud)

第一个导入模块中的所有内容react(请参阅:导入整个模块的内容

第二个仅导入default模块导出(请参阅:导入默认值


似乎这两种方法是不同的,并且根本上是不兼容的。

为什么它们都起作用?


请参考源代码并解释该机制...我有兴趣了解其工作原理。


更新资料

与import *作为'react'的反应与import'react'的反应之间的区别不是重复的

ES6常规模块信息回答了该问题。

我在问使react模块像这样工作的机制。在这里,它似乎与源代码中的 “ hacky”导出机制有关,但尚不清楚如何将整个模块导入到默认的导出中React,以及如何将这两种方法都可以与转译JSX等一起使用。

javascript typescript ecmascript-6 reactjs react-native

14
推荐指数
2
解决办法
3069
查看次数

TypeScript 错误:“ReactNode”类型上不存在属性“children”

export const PageViewTracker = ({ children }: ReactNode): ReactElement => {

    usePageView();

    return children;
};
Run Code Online (Sandbox Code Playgroud)

问题:

此函数返回错误» “ReactNode”类型上不存在属性“children” «

我的解决方法:

我尝试了几种类型,但只有任何不是我想要的作品。通常我将 ReactNode 用于儿童道具,效果很好。在这种情况下,TypeScript 似乎有问题。

typescript reactjs

10
推荐指数
5
解决办法
2万
查看次数