Chr*_*ond 4 javascript arrays properties typescript reactjs
我在一个项目中有几个类,使用 create-react-app 创建,我想将一组对象传递给子元素,如下所示。
// Items.tsx
import * as React from 'react';
import ItemTable from './ItemTable';
import { IItem } from './ItemRow';
class Items extends React.Component {
private items = IItem[];
componentWillMount() {
// connect to backend service and retrieve all Items
items = get_items();
}
render() {
return (
<ItemTable items={this.items} />
);
}
}
export default Items;
////////////////////////////////////////////////////////////////
// ItemsTable.tsx
import * as React from 'react';
import { Table } from 'reactstrap';
import ItemRow from './ItemRow';
let ItemTable = (items: IItem[]) => (
<Table>
<thead>
<tr>
<th>Name</th>
<th>Description</th>
<th>Website</th>
</tr>
</thead>
<tbody>
{items.map(item => (
<ItemRow item={item} />
))}
</tbody>
</Table>
);
export default ItemTable;
////////////////////////////////////////////////////////////////
// ItemRow.tsx
import * as React from 'react';
export interface IItem {
name: string;
description: string;
website: string;
}
let ItemRow = (item: IItem) => (
<tr>
<td>{item.name}</td>
<td>{item.description}</td>
<td>{item.website}</td>
</tr>
);
export default ItemRow;
Run Code Online (Sandbox Code Playgroud)
可悲的是,在构建/编译期间,我不断收到错误消息,指出'{ items: IItem[]; }'无法将 type 分配给 type 'items: IItem[]'。请注意,与第一个实例相比,第二个实例中缺少大括号。
我认为 Typescript 或 React 显然是将数组粘贴到一个对象中,而不是像我期望的那样传递数组。
谁能弄清楚我在这里可能做错了什么?
您需要将 props 传递给您的ItemTable,而不是直接传递给项目
let ItemTable = (items: IItem[]) => (
Run Code Online (Sandbox Code Playgroud)
应该
let ItemTable = (props: {items: IItem[]}) => (
const {items} = props;
Run Code Online (Sandbox Code Playgroud)
也可以缩写为
let ItemTable = ({items}: {items: IItem[]}) => (
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4215 次 |
| 最近记录: |