【发布时间】:2020-03-07 22:54:05
【问题描述】:
我认为这是一个足够简单的问题。我正在尝试在反应中创建一个材质 ui 网格并能够向其中添加行。我已经尝试了几种模式的变化,但没有什么对我有用。我在下面粘贴示例,您可以找到代码here。
import React from "react";
import "./styles.css";
import { observer, useObservable } from "mobx-react-lite";
import MaterialTable from "material-table";
import Button from "@material-ui/core/Button";
const columns = [
{ title: "First Name", field: "name" },
{ title: "Last Name", field: "surname" },
{ title: "Year of Birth", field: "birthYear", type: "numeric" },
{
title: "City of Birth",
field: "birthCity",
lookup: {
34: "Haughton",
63: "San Diego",
88: "Henryetta"
}
}
];
const initialData = [
{ name: "Dak", surname: "Prescott", birthYear: 1993, birthCity: 34 }
];
const addData = [
{ name: "Troy", surname: "Aikman", birthYear: 1966, birthCity: 88 },
{ name: "Tony", surname: "Romo", birthYear: 1980, birthCity: 63 }
];
const App = observer(() => {
const store = useObservable({
data: initialData,
index: 0,
addRow() {
if (store.index < store.data.length) {
store.data.push(addData[store.index++]);
}
}
});
return (
<div className="App">
<MaterialTable
columns={columns}
data={store.data}
title="Sample Material Table"
/>
<Button onClick={() => store.addRow}>Add Row</Button>
</div>
);
});
export default App;
这只是一种尝试。我在单独的文件中创建真正的 Mobx 存储,每个可观察的属性我都用 @observable 进行注释,但在这一点上,我绝对会接受任何有效的东西。我已经让 Mobx 商店使用原生值(字符串和数字)但不使用对象数组。我希望我只是漏掉了一些细微的差别。
【问题讨论】:
标签: reactjs observable react-hooks mobx material-table