Javascript 警告findDomNode

Javascript 警告findDomNode,javascript,reactjs,material-ui,react-hooks,use-ref,Javascript,Reactjs,Material Ui,React Hooks,Use Ref,我试着用material ui和React创建一个选择菜单 const SelectLevelButton=forwardRef((道具,ref)=>{ 常量[stateLevel,setStateLevel]=useState({ 级别:“轻松” }); 常量[状态菜单,设置状态菜单]=使用状态({ 伊索彭:错 }); 常量openMenuHandler=()=>{ 设置状态菜单({ 伊索彭:是的 }); }; const closeMenuHandler=()=>{ 设置状态菜单({ 伊索

我试着用material ui和React创建一个选择菜单

const SelectLevelButton=forwardRef((道具,ref)=>{
常量[stateLevel,setStateLevel]=useState({
级别:“轻松”
});
常量[状态菜单,设置状态菜单]=使用状态({
伊索彭:错
});
常量openMenuHandler=()=>{
设置状态菜单({
伊索彭:是的
});
};
const closeMenuHandler=()=>{
设置状态菜单({
伊索彭:错
});
};
const buttonRef=useRef();
控制台日志(按钮ref.current);
返回(
容易的
正常的
硬的
{`Level:${stateLevel.Level}`}
);
});

导出默认SelectLevel按钮菜单中的anchorEl引用未定义,因为您在开始时从按钮Ref.current undefined获得它。因此它使用findDOMNode代替。 在打开菜单之前,请参见物料界面文档如何获取参考

您需要这样更改代码(未经测试):

const SelectLevelButton=forwardRef((道具,ref)=>{
常量[anchorEl,setAnchorEl]=React.useState(null);
常量[stateLevel,setStateLevel]=useState({
级别:“轻松”
});
常量[状态菜单,设置状态菜单]=使用状态({
伊索彭:错
});
常量openMenuHandler=事件=>{
Setancorel(事件当前目标);
设置状态菜单({
伊索彭:是的
});
};
const closeMenuHandler=()=>{
设置状态菜单({
伊索彭:错
});
};
const buttonRef=useRef();//不需要这样做
控制台日志(按钮ref.current);
返回(
容易的
正常的
硬的
{`Level:${stateLevel.Level}`}
);
});
导出默认SelectLevel按钮。归功于