【发布时间】:2020-01-18 17:32:22
【问题描述】:
我正在做一个项目,我基本上使用材料表界面进行 crud。我想知道是否有办法让我也想填写必填字段?
我尝试研究但没有太多结果。请参阅下面的代码,该代码直接来自 https://material-ui.com/components/tables/ 上一个示例。当然,我已经修改了我的代码库以供我个人使用,一切正常,但我不确定如果我也想要,如何制作必填字段?如果是,我会怎么做?我会在 MaterialTable 上传递一些东西作为道具选项吗?
感谢您的任何建议。
import React from 'react';
import MaterialTable from 'material-table';
export default function MaterialTableDemo() {
const [state, setState] = React.useState({
columns: [
{ title: 'Name', field: 'name' },
{ title: 'Surname', field: 'surname' },
{ title: 'Birth Year', field: 'birthYear', type: 'numeric' },
{
title: 'Birth Place',
field: 'birthCity',
lookup: { 34: 'İstanbul', 63: 'Şanlıurfa' },
},
],
data: [
{ name: 'Mehmet', surname: 'Baran', birthYear: 1987, birthCity: 63 },
{
name: 'Zerya Betül',
surname: 'Baran',
birthYear: 2017,
birthCity: 34,
},
],
});
return (
<MaterialTable
title="Editable Example"
columns={state.columns}
data={state.data}
editable={{
onRowAdd: newData =>
new Promise(resolve => {
setTimeout(() => {
resolve();
const data = [...state.data];
data.push(newData);
setState({ ...state, data });
}, 600);
}),
onRowUpdate: (newData, oldData) =>
new Promise(resolve => {
setTimeout(() => {
resolve();
const data = [...state.data];
data[data.indexOf(oldData)] = newData;
setState({ ...state, data });
}, 600);
}),
onRowDelete: oldData =>
new Promise(resolve => {
setTimeout(() => {
resolve();
const data = [...state.data];
data.splice(data.indexOf(oldData), 1);
setState({ ...state, data });
}, 600);
}),
}}
/>
);
}
【问题讨论】:
-
documentation 有一个自定义可编辑组件的示例,显示一个简单的
input,您可以在其中添加therequiredattribute。 -
@HereticMonkey 我以前看过,即使是现在,我也没有看到需要输入/字段的示例,仅用于只读但不可编辑,也许我错过了一些东西。谢谢。
-
正如我所提到的,将其用于自定义编辑组件。屏幕底部的最后一个。你看到了吗?看代码。它有一个属性
editComponent,它显示了input元素的使用。它有type="text"。为此,您可以将required添加为属性(如我提供的链接所示)。required属性不是示例的一部分。我告诉你自己添加它。这就是编程的全部意义所在。举个例子,并与他们一起走得更远。 -
@HereticMonkey 我完全同意举个例子并进一步研究它们。谢谢你的详尽。
标签: javascript reactjs ecmascript-6 material-ui material-table