【发布时间】:2020-07-13 03:11:13
【问题描述】:
我正在尝试在 React-Admin 中使用名为“UserRolesSelect”的自定义输入字段构建一个编辑表单,该字段显示来自单独角色端点的角色列表,其中当前用户的角色被选中。但是,在发出编辑请求时,自定义输入的值不会在表单数据中更新。我提供了来自上述两个端点的示例响应。
// sample response for getting user details by ID
const user = {
id:1,
name:'User1',
email:'user1@user.com',
created_at:2020-04-01T10:43:36.000000Z,
roles:[{id:1,name:'User'}]
};
// sample response of getting roles list
const roles = [
{id: 1,
name: 'user'},
{id: 2,
name: 'admin'}
]
const UserRolesSelect = ({ source, record }) => {
const [selectedRoles, setRoles] = useState([]);
useEffect(() => {
const userRoles = record.roles.map(role => role.id);
setRoles(userRoles);
}, []);
const { data, loading: rolesLoading, error: rolesError } = useQuery({
type: 'getList',
resource: 'roles',
});
if (rolesLoading) return <Loading />;
if (rolesError) return <Error />;
if (!data) return null;
const rolesList = data.map(role => <MenuItem key={role.id} value={role.id} selected={selectedRoles}>
{role.name}
</MenuItem>);
const handleChangeMultiple = event => {
const { value: role } = event.target;
const value = [...role];
setRoles(value);
};
return <Select
value={selectedRoles}
onChange={handleChangeMultiple}
multiple
>
{rolesList}
</Select>
};
const UserEdit = props => {
return <Edit {...props}>
<SimpleForm >
<TextInput source="name" />
<TextInput source="email" />
<UserRolesSelect source="roles"/>
</SimpleForm>
</Edit>
};
【问题讨论】:
标签: reactjs react-admin react-final-form