У меня есть приложение React, использующее Redux в качестве менеджера состояний. В этом приложении мы решаем использовать сетки Kendo Ui. Первый тест в порядке, но мы заметили, что столбцы совершенно неверны. Мы определяем только 5 столбцов для отображения в таблице, но мы заметили, что отображаются все столбцы из объекта json. Например, в методе рендеринга у меня есть этот код:
render() {
return (
<div>
<Grid
style={{ height: '400px' }}
data={this.state.gridData}
>
<Column field="ProductID" title="ID" width="40px" />
<Column field="ProductName" title="Name" width="250px" />
<Column field="Category.CategoryName" title="CategoryName" />
<Column field="UnitPrice" title="Price" width="80px" />
<Column field="UnitsInStock" title="In stock" width="80px" />
</Grid>
</div>
);
}
, который должен показывать только:
ID | Name | CategoryName | Price | In stock
но он отображает заголовки:
ProductID | ProductName | SupplierID | CategoryID | UnitPrice | UnitsInStock
непосредственно из объекта json:
"ProductID " : 1,
"ProductName" : "Chai",
"SupplierID" : 1,
"CategoryID" : 1,
"UnitPrice" : 18.0000,
"UnitsInStock" : 39
Другими словами, независимо от того, какие столбцы я определяю (как тег <Column />
), сетка всегда показывает поле json в качестве заголовков столбцов.
Импортированы следующие библиотеки:
import { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';
Я использую именно пример с этой страницы:
https://www.telerik.com/kendo-react-ui/components/grid/
В консоли нет ошибок, поэтому трудно найти, что происходит.
Есть идеи?
Обновление:
Я добавил этот оператор console.log и вижу, что столбцы пусты:
constructor(props: IProps) {
super(props);
this.state = { producuts: [{ ProductID: 'Cindy', ProductName: 'Jones', UnitPrice: 'cindy.jones@telerik.com' }]
};
this.grid = null;
}
render() {
return (
<div>
<Grid
data={this.state.producuts}
reorderable={true}
ref={(g) => { this.grid = g; }}
>
<GridColumn field="ProductID" title="ID" />
<GridColumn field="ProductName" title="Name" />
</Grid>
<button onClick={() => {
console.log(this.grid);
console.log(JSON.stringify(this.grid.columns));
}}>
log current properties into browser console.
</button>
</div>
);
}
Эта строка console.log(JSON.stringify(this.grid.columns))
всегда содержит пустой массив []
Хотя заголовки должны быть:
ID | Name
но они выглядят так: