我有一个List
视图,我希望根据ReferenceField
组件创建的表中呈现的当前行的值来呈现Datagrid
字段。
如何访问当前行的数据? (当前行的列的值)。
我尝试record.processed
但是我收到一条错误,说记录对象不存在(processed
是记录中我要检查的列,以便格式化字段)。我还尝试了resource.processed
,this.props.processed
和this.props.record.processed
但没有成功。
显示我正在尝试做的事情的代码如下:
<List title="Sales Inquiries" filter={{ request_type: 'sales' }} {...props}>
<Datagrid>
<TextField source="id" />
<TextField source="firstname" label="First Name" />
<TextField source="lastname" label="Last Name" />
<TextField source="company" />
<TextField source="email" />
<DateField source="timestamp" label="Received" />
{record.processed ?
<ReferenceField label="Processed By" source="processedBy_id" reference="Users">
<TextField source="username" />
</ReferenceField>
: <span>Nobody</span> }
<ShowButton />
</Datagrid>
</List>
修改
按照@kunal pareek的建议,将一个HOC应用于ReferenceField字段,修改它以便按如下方式显示正确的内容:
const CustomField = (props) => (
<span>
{props.record.processed ?
<ReferenceField label="Processed By" source="processedBy_id" reference="Users">
<TextField source="username" />
</ReferenceField>
: <span>Nobody</span> }
</span>
);
答案 0 :(得分:1)
记录在您想要作为变量的位置实际上不可用。它作为prop传递给组件。
所以你可以做到这一点。
<List title="Sales Inquiries" filter={{ request_type: 'sales' }} {...props}>
<Datagrid>
<TextField source="id" />
<TextField source="firstname" label="First Name" />
<TextField source="lastname" label="Last Name" />
<TextField source="company" />
<TextField source="email" />
<DateField source="timestamp" label="Received" />
<CustomField />
<ShowButton />
</Datagrid>
</List>
const CustomField = (props) => (
{props.record.processed ?
<ReferenceField label="Processed By" source="processedBy_id" reference="Users">
<TextField source="username" />
</ReferenceField>
: <span>Nobody</span> }
)
以上只是一个简单的例子。我已经直接采用了你的代码并重新格式化了,所以它可能不会直接起作用。但我一直在使用这种方法在几个地方更改我的组件的值。
您也可以使用HOC。你可以在这里找到例子
答案 1 :(得分:0)
dependent-input插件可以帮助您。