iam*_*ham 5 javascript typescript reactjs webpack
我正在尝试使用 Typescript 来响应 Hello World。我写了下面的代码。这段代码在我使用方法1时有效,但在方法2时抛出错误
Method 1-TypeScriptComponent.tsx
import React from 'react'
import ReactDOM from 'react-dom'
import Button from 'react-bootstrap/lib/Button'
interface TypeScriptComponentProps {
}
function handleClick() {
console.log("Hello World")
}
export const TypeScriptComponent = (props: TypeScriptComponentProps) => <Button onclick={handleClick()} bsClass="glyphicon glyphicon-new-window"></Button>;
Run Code Online (Sandbox Code Playgroud)
这段代码可以工作(handleClick 函数有一些意想不到的行为,我可以稍后解决。)
但这个方法行不通
Method 2-TypeScriptComponent.tsx
import React from 'react'
import ReactDOM from 'react-dom'
import Button from 'react-bootstrap/lib/Button'
interface TypeScriptComponentProps {
}
function handleClick() {
console.log("Hello World")
}
export default class TypeScriptComponent extends React.Component<TypeScriptComponentProps, {}> {
render() {
return (<Button onclick={handleClick()} bsClass="glyphicon glyphicon-new-window"></Button>)
}
}
Run Code Online (Sandbox Code Playgroud)
方法2抛出错误
[at-loader] ./components/TypeScriptComponent.tsx:43:70 TS2339 中出现错误:类型“() => any”上不存在属性“_ proto _”。
[at-loader] ./components/TypeScriptComponent.tsx:46:5 TS2346 中出现错误:提供的参数与调用目标的任何签名都不匹配。
我无法弄清楚这两种方法有什么区别?为什么会出现这些错误?
您的代码有多个问题。
* as React from 'react'. ReactDOM 也是如此。ButtonTypeScript 输入路径,则无法在那里找到任何内容。onclick你Button. 只有一个onClick.onClick没有任何意义。您必须传递函数而不是函数的返回值。这对我有用:
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { Button } from 'react-bootstrap';
interface TypeScriptComponentProps {
}
function handleClick() {
console.log('Hello World');
}
class App extends React.Component<TypeScriptComponentProps, {}> {
render() {
return (<Button onClick={handleClick} bsClass="glyphicon glyphicon-new-window">Click Me!</Button>)
}
}
ReactDOM.render(
<App />,
document.getElementById('root') as HTMLElement
);
Run Code Online (Sandbox Code Playgroud)
我的配置使用的是ts-loadernot at-loader。您是否将其添加CheckPlugin到您的 webpack 配置中?否则你不会得到任何类型错误。
如果您是新手或不熟悉 Webpack/TypeScript/React-combo,我建议您查看以下分支create-react-app: https: //github.com/wmonk/create-react-app-typescript :)
| 归档时间: |
|
| 查看次数: |
5508 次 |
| 最近记录: |