当前位置: 首页 > 知识库问答 >
问题:

将常量函数代码从JSX转换为TSX

邢星波
2023-03-14

我试图转换在JSX中定义备用路由组件的方式,一个等效的TypeScript TSX文件。(1)

JSX语法如下所示:

import React from 'react';
import { Route, Redirect } from 'react-router-dom';

export const PrivateRoute = ({ component: Component, ...rest }) => (
    <Route {...rest} render={props => (
        localStorage.getItem('user')
            ? <Component {...props} />
            : <Redirect to={{ pathname: '/login', state: { from: props.location } }} />
    )} />
)

我试图将其转换为TypeScript,但在Visual Studio中, 部分(见下文)带有下划线,TypeScript编译器告诉我

(TS) JSX element type 'Component' does not have any construct or call signatures.
export function PrivateRoute(Component: React.Component, ...rest: any[]) {
    return (
        <Route {...rest} render={props => (
            localStorage.getItem('user')
                ? <Component {...props} />
                : <Redirect to={{ pathname: '/login', state: { from: props.location } }} />
        )} />
    );
};

参考资料:

  1. https://www.pointblankdevelopment.com.au/blog/135/react-redux-with-aspnet-core-20-login-registration-tutorial-example#private-route-jsx

共有1个答案

应翰飞
2023-03-14

关于错误-jsx/tsx 将转换为类似于 react.createElement(component...,所以 component类型应该是函数/类,而不是实例。因此,正确的类型应该是 componenttype

关于{Component:Component,...rest}-这是一个对象析构,赋值给新变量。传递的参数被解压缩到变量组件rest(参数的组件属性转到组件变量,所有rest属性转到rest变量)

总而言之,结果的键入可能如下所示:

type RouteProps = { component: React.ComponentType };
export function PrivateRoute(
    { component: Component, ...rest }: RouteProps) {
    ...
};

 类似资料:
  • 我是新来的反应。所以请原谅我的天真。我有以下一段反应代码: 我需要在类中转换上面的代码并将其导出:我编写了下面的代码 但是,因为这是一个容器类,所以我不希望在我的this组件类中使用“document..getElementById(“容器”)。我的index.js已经有了 请帮帮我。

  • 我试图将我的Javascript撰写函数翻译成Python,但我对最后一个有问题。我如何推广未知数量的函数? 读完本文后,我想避免使用方法。 javascript: 蟒蛇: 感谢所有的改进。。。

  • 问题内容: 好的,所以我有一个来自EEG扫描的数据文件(一个二进制文件,data.eeg),在matlab中,用于读取文件并绘制部分数据的代码如下所示: 这是我的“翻译”尝试 这就是让我感到困惑的地方。根据文档,matlab的fread是一种通过fread(loaded_file,size,data_type)读取二进制文件的方法。python中的替代方法是使用numpy的fromfile并使用内

  • 问题内容: 这是我先前问题的跟进,我正在使用Senthil Kumaran建议的2to3工具 似乎工作正常,但没有涉及到这一部分: 3.2中应该是什么样子? 编辑: 从下面的答案的变化是好的,2to3现在似乎工作正常。但是,在setup.py构建中,我现在看到以下错误,请参见我的新问题。 问题答案: LexError后删除逗号。可以在Python 2和Python 3中使用。 在Python 2中

  • 问题内容: 我有一个React应用程序,它基于某些配置生成HTML输出。像这样: 在react应用程序内部,我可以轻松地显示生成的DOM对象,但是我想将HTML代码保存到DB,以将其显示在其他页面上(而无需再次加载react / pars配置) 我找不到将JSX对象转换为纯HTML的方法… 问题答案: 使用renderToStaticMarkup方法-它生成HTML字符串,我们可以将其快速传输到线

  • 如何将向量转换/复制为唯一的\u ptr 这就是我想要实现的(向量起源于另一个上下文,在复制到unique_ptr后将被删除。unique_ptr具有固定长度,因此可以更有效地分配)。 我试图复制一个构造器 那么,我应该如何构造复制构造函数呢? 实际上,而且,一旦构建,我想要unique_ptr 在这两种情况下,复制构造函数的外观如何? 案例1)std::唯一性