ks0*_*099 4 javascript reactjs material-ui material-table
我正在尝试在我的项目中使用“材料表”。我的“图标”列包含图标名称。我需要通过从外部对话框中选择它来更改此图标。我在从外部对话框更新表数据时遇到问题。当我使用“输入”元素并更改图标名称时,它可以正常工作。
editComponent: props => (
<input
type="text"
value={props.value}
onChange={e => props.onChange(e.target.value)}
/>
)
Run Code Online (Sandbox Code Playgroud)
我不知道如何通过我的对话框达到这个结果。我创建了以下片段项目来详细显示我需要的内容: https: //codesandbox.io/embed/gifted-liskov-ih72m
当我通过文本更改图标名称并保存更改时 - 就可以了。更改已保存。当我通过从外部对话框中选择图标并保存更改来更改图标时 - 它不起作用。
editComponent: props => (
<SelectIconDialog
value={props.value}
onChange={e => props.onChange(e.target.value)}
/>
)
Run Code Online (Sandbox Code Playgroud)
我不知道如何调用“SelectIconDilog”内的 props 给出的“onChange”。
export default function SelectIconDialog(props) {
const { value, onChange } = props;
const [open, setOpen] = React.useState(false);
const [selectedValue, setSelectedValue] = React.useState(value);
function handleClickOpen() {
setOpen(true);
}
const handleClose = value => {
setOpen(false);
setSelectedValue(value);
//onChange(value); // it doesn't work
};
return (
<div>
<Tooltip title={selectedValue}>
<IconButton
onClick={handleClickOpen}
color="default"
>
<DynamicIcon
iconName={selectedValue}
// onChange={onChange} // it doesn't work
/>
</IconButton>
</Tooltip>
<SimpleDialog selectedValue={selectedValue} open={open} onClose={handleClose} />
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
在SelectIconDialog使用中onChange={e => props.onChange(e)},因为e是图标名称并且您希望将其分配给您的input.
const [state, setState] = React.useState({
columns: [
{
...
editComponent: props => (
<SelectIconDialog value={props.value} onChange={props.onChange} />
)
},
...
}
Run Code Online (Sandbox Code Playgroud)
此外,如果SimpleDialog您因为没有为您的 分配唯一键而收到错误iconNames,请尝试:
<div>
{iconsNames.map((iName, key) => (
<Tooltip title={iName} key={key}>
<IconButton onClick={() => handleItemClick(iName)}>
<DynamicIcon iconName={iName} />
</IconButton>
</Tooltip>
))}
</div>;
Run Code Online (Sandbox Code Playgroud)
演示:
| 归档时间: |
|
| 查看次数: |
13422 次 |
| 最近记录: |