Mic*_*ant 4 reactjs react-proptypes
在尝试将文件转换为打字稿时,我收到上述错误
handleToggle() {
const { toggleTodo, id } = this.props; // <-- Error
toggleTodo(id);
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几种方法,例如向我为此组件添加的接口添加属性、添加绑定语句、为这些属性添加方法等。但是它们都会给出错误,通常是上述错误。只是添加打字稿检查似乎我不需要做很多改变。我在这里看到的其他类似问题和答案没有帮助。例如,我将这些项目添加到界面道具中,但仍然出现错误。
到目前为止我的代码(在转换之前工作正常)是
import React, { Component } from 'react'
interface TodoItemProps { // Added this interface for props
title: string,
completed: boolean,
}
export default class TodoItem extends Component {
constructor(props:TodoItemProps) { // used inteface from abovereact
super(props);
this.handleToggle = this.handleToggle.bind(this);
this.handleRemove = this.handleRemove.bind(this);
}
handleToggle() {
const { toggleTodo, id } = this.props; // < -- errors here.
toggleTodo(id);
}
handleRemove() {
const { removeTodo, id } = this.props;
removeTodo(id);
}
render() {
const { title, completed } = this.props;
return (
<div style={{ width: 400, height: 25 }} >
<input
type="checkbox"
checked={completed}
onChange={this.handleToggle} />
{title}
<button style={{ float: 'right' }} onClick={this.handleRemove}>x</button>
</div>
)
}
}
Run Code Online (Sandbox Code Playgroud)
我有
@types/react
@types/react-node
Run Code Online (Sandbox Code Playgroud)
作为开发依赖项。
不知道如何解决这个问题
Nic*_*wer 11
目前,您还没有告诉打字稿该组件需要什么道具,因此它默认为空对象{}。您确实在构造函数中放置了一个类型,但这不是将其应用于整个类的正确位置。
要修复它,请更改此:
export default class TodoItem extends Component {
Run Code Online (Sandbox Code Playgroud)
对此:
export default class TodoItem extends Component<TodoItemProps> {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7799 次 |
| 最近记录: |