我有疑问,我相信它会对其他开发者有所帮助。
我有字段" is_active"在我的API端是布尔值,但它返回0或1而不是TRUE或FALSE。
我想使用<FunctionField/>
来包装<BooleanField/>
,但它没有用。有人可以帮忙。
这是我的代码:
<FunctionField source="is_active" label="is_active" render={(record) => record.is_active ? true : false}>
<BooleanField/>
</FunctionField>
该列仍为空白。
感谢。
答案 0 :(得分:2)
我认为您误解了FunctionField
组件。它呈现render
道具的结果。你想要达到的目标是:
<FunctionField source="is_active" label="is_active" render={(record,source) =>
<BooleanField record={{...record,is_active:!!record.is_active}} source={source}/>}/>
但这不是很好。更好的是包装你的dataProvider/restClient
并确保数据是布尔值。
// In FixMyDataFeature.js
export default restClient => (type, resource, params) => restClient(type,resource,params).then(response=>
if(resource === 'Resource_with_numeric_is_active_field`){
return {
data: mutateIsActiveFieldToBoolean(response.data)
}
}
else{
return response;
}
);
并与管理员联系:
<Admin dataProvider={FixMyDataFeature(dataProvider)}... />
答案 1 :(得分:1)
这是我的解决方案:(您可以将其导入并使用它代替BooleanField)
import React from 'react';
import { BooleanField } from "react-admin";
export const BooleanNumField = ({ record = {}, source}) => {
let theRecord = {...record};
theRecord[source + 'Num'] = !!parseInt(record[source]);
return <BooleanField record={theRecord} source={source + 'Num'} />
}