I have a select function within a material-table (a module which I installed). I am also using the Chips component from Material-UI. However, in this function I have tried troubleshooting why nothing appears when I select something and it seems that my renderValue function is not being called.
Here is the code:
function handleChange(event) {
console.log("!")
setRoleIds(event.target.value);
}
const renderChip = (value) => {
console.log("?!??!?");
console.log(value);
return <Chip label={value} className={classes.chip} />;
};
const [cassowaries, setCassowaries] = React.useState({
columns: [
{ title: "Cassowary Name", field: "name" },
{
title: "Cassowary Roles",
field: "roles",
render: (rowData) => {
return (
<li>
{rowData.roles.map((role) => (
<Chip label={role} className={classes.chip} />
))}
</li>
);
},
editComponent: (props) => (
<FormControl className={classes.formControl}>
<InputLabel>Roles</InputLabel>
<Select
multiple
value={roleIds}
onChange={handleChange}
input={<Input id="select-multiple-chip" />}
renderValue={renderChip}
// MenuProps={MenuProps}
>
{allRoleIds.map((id) => (
<MenuItem key={id} value={id}>
{id}
</MenuItem>
))}
</Select>
</FormControl>
),
},
{ title: "Penguin", field: "penguin" },
],
data: [{ name: "Mehmet", roles: roleIds, penguin: true }],
});
Would someone be able to help or guide me please?
Make sure you have the following properties set:
<Select
native={false}
displayEmpty={true}
...
</Select>
You have to set displayEmpty={true} to make it to render if the value is empty and native={false} because renderValue() works only for non native selects according to the docs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With