【发布时间】:2020-02-16 13:37:45
【问题描述】:
我是 React 新手,我正在尝试构建一个非常基本的时间表工具,用户可以在其中将任务添加到应用程序中并保存。我正在使用 React 和 Typescript。
到目前为止,我的主要组件包括一个空的任务数组和表格。然后在表格主体内部,我已映射以提取表格行和包含标签的单独组件。
我正在尝试添加一个按钮以使用数组上的过滤器方法删除任务以删除单个项目的索引,但是当我单击时没有任何反应,或者我收到未定义的错误。有人可以帮忙吗?我正在使用下面的删除按钮和句柄删除功能来实现这一点
主要组件
import * as React from 'react';
import { ITimesheetToolProps } from './ITimesheetToolProps';
import { escape } from '@microsoft/sp-lodash-subset';
import TableRow from './TableRow';
import styles from './TimesheetTool.module.scss';
export default class TimesheetTool extends React.Component<ITimesheetToolProps, any> {
state = {
tasks: []
}
addTask = (task) => {
const tasks = [...this.state.tasks];
this.setState({tasks: this.state.tasks.concat(task)});
}
handleDelete = (index) => {
const tasks = this.state.tasks.filter(t => t.index !== index);
this.setState({ tasks });
}
public render(): React.ReactElement<ITimesheetToolProps, any> {
return (
<div>
<button onClick={(task) => this.addTask(task)}>Add Task</button>
<table>
<thead className={styles.tbody}>
<tr>
<th>Project</th>
<th>Task</th>
<th>Monday</th>
<th>Tuesday</th>
<th>Wednesday</th>
<th>Thursday</th>
<th>Friday</th>
<th>Saaturday</th>
<th>Sunday</th>
</tr>
</thead>
<tbody className={styles.tbody}>
{this.state.tasks.map((task, index) => <tr key={index}><TableRow /><td><button onClick={() => this.handleDelete(index)}>Delete</button></td></tr>)}
</tbody>
</table>
</div>
);
}
}
【问题讨论】:
标签: javascript reactjs typescript function events