gpt4 book ai didi

reactjs - 在 Typescript 中创建 React HOC 时出错

转载 作者:搜寻专家 更新时间:2023-10-30 21:18:37 24 4
gpt4 key购买 nike

我正在尝试在 Typescript 中创建和编译 React 高阶组件。

但是我得到一个错误。首先 VSCode 提示这个

'WrappedComponent' refers to a value, but is being used as a type here.

** 我的 Typescript 编译器抛出了这个错误。**

lib/auth.ts:44:30 - error TS1005: '>' expected.

44 return <WrappedComponent {...this.props} />;
~

lib/auth.ts:44:47 - error TS1109: Expression expected.

44 return <WrappedComponent {...this.props} />;
~

lib/auth.ts:44:48 - error TS1109: Expression expected.

44 return <WrappedComponent {...this.props} />;

**下面是我的 React HOC 组件代码 **

import * as React from 'react';
import Router from 'next/router';
import { NextContext } from 'next';
import nextCookie from 'next-cookies';
import { MOVED_TEMPORARILY } from 'http-status-codes';

interface ComponentExtra extends React.Component, React.SFC {
getInitialProps: Function;
}

export const withAuthSync = (WrappedComponent: ComponentExtra) => class extends React.Component {
static async getInitialProps(ctx: NextContext) {
const token = auth(ctx);
const componentProps = WrappedComponent.getInitialProps && (await WrappedComponent.getInitialProps(ctx));
return { ...componentProps, token };
}

render() {
return <WrappedComponent {...this.props} />;
}
};

export const auth = (ctx: NextContext) => {
const { req, res } = ctx;
const { token } = nextCookie(ctx);

if (req && res && !token) {
res.writeHead(MOVED_TEMPORARILY, { Location: '/signin' }).end();
return;
}

return token;
};

**更新错误是由于文件扩展名不是 .tsx 而是 .ts **

最佳答案

这个错误意味着 JSX 语法没有被这样解析:

lib/auth.ts:44:30 - error TS1005: '>' expected.

44     return <WrappedComponent {...this.props} />;

为此,auth.ts 应该重命名为 auth.tsx。如果为 JSX 正确配置了 TypeScript,这是唯一需要的修复。

关于reactjs - 在 Typescript 中创建 React HOC 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55679552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com