TextField 在每次击键时失去焦点

问题描述 投票:0回答:2

我在对话框中有一个 MUI 文本字段。每次击键时,整个对话框都会重新呈现,并且文本字段上的焦点会丢失。我添加的每个新角色都是持久的。

这是我的对话框,文本字段和

onChange
位于其中。

const [action, setAction] = useState("");
function ActionDialog() {
    return (
        <Dialog open={open} onClose={handleClose} fullWidth maxWidth="sm">
            <DialogTitle>Action ID: {open}</DialogTitle>
            <DialogContent>
                <TextField
                    value={action?.Comment}
                    onChange={(e) => {
                        setAction((prev) => {
                            return { ...prev, Comment: e.target.value };
                        });
                    }}
                    label="Comment"
                    variant="outlined"
                    size="small"
                />
            </DialogContent>
        </Dialog>
    );
}
javascript reactjs material-ui
2个回答
1
投票

您的状态变量在

ActionDialog
组件之外声明是否有原因?这是因为
ActionDialog
组件是在另一个父组件中声明的吗? 如果是这种情况,每次状态变量更改时,都会创建 ActionDialog 组件的新实例。为了让事情变得更简单,请将状态变量设置为设置状态的组件的本地变量。


0
投票

确保某些父组件不会重新渲染。您可以使用react开发工具,记录包含onchange的会话。如果你的父母之一被重新渲染,你将失去输入的焦点

© www.soinside.com 2019 - 2024. All rights reserved.