记录属性未呈现为字符串

时间:2019-05-13 09:55:10

标签: javascript string reactjs

我正在尝试访问记录属性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属性的任何建议?

谢谢

2 个答案:

答案 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}