我正在尝试访问记录属性odata.type
,所以我可以根据其值修改EditForm
。我已经创建了一个常数,该常数应该可以正确地执行此操作,但是当我使用console.log
打印该常数时,出于某些原因,它会显示如下:
ƒ HWType(_ref2) {
var record = _ref2.record;
return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
__source: {
fileName: _jsxFileName,
lineNumber: 31
},
我的常数如下:
const HWType = ({ record }) => {
return <span>{record ? record["odata.type"] : null}</span>;
}
关于如何访问odata.type
属性的任何建议?
谢谢
答案 0 :(得分:1)
如果要基于record
属性的某些值显示或隐藏输入,可以使用<FormDataConsumer>
。在您的情况下,它看起来像这样:
首先,您必须添加要调整的输入:
<TextField source="odata.type" Name="HWType" disabled={true} />
然后:
<FormDataConsumer>
{({ formData, ...rest }) => formData["odata.type"] === "HardwareDatabase.CPU" &&
<ReferrenceSelectBox label="Socket" source="SocketTypeId" reference="CPUSocketType" {...rest}></ReferrenceSelectBox>
}
</FormDataConsumer>
这样,仅当您的record
属性等于HardwareDatabase.CPU
时,才应该显示此特定输入
您可以在文档中查看FormDataConsumer
:
https://marmelab.com/react-admin/Inputs.html#hiding-inputs-based-on-other-inputs
答案 1 :(得分:0)
HWType
是您的react组件。您不能添加这样的条件。您必须将const
视为const
,而不是component
const HWType = ({ record }) => {
return <span>{record ? record["odata.type"] : null}</span>;
}
我们可以将其修改为
const HWType = ({ record }) => {
return record ? record["odata.type"] : null;
}
它可以用作
const obj = {record: '...'} // your actual object value
{HWType(obj) === "HardwareDatabase.CPU" ? <ReferrenceSelectBox label="Socket" source="SocketTypeId" reference="CPUSocketType"></ReferrenceSelectBox> : null}