reactjs - 使用react-router-dom时如何避免 'Function components cannot be given refs'?

标签 reactjs react-router material-ui

我有以下内容(使用 Material UI)....

import React from "react";
import { NavLink } from "react-router-dom";
import Tabs from "@material-ui/core/Tabs";
import Tab from "@material-ui/core/Tab";
function LinkTab(link){
    return <Tab component={NavLink}
        to={link.link}
        label={link.label}
        value={link.link}
        key={link.link}
    />;
}

在新版本中,这会导致以下警告...

Warning: Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?

Check the render method of ForwardRef. in NavLink (created by ForwardRef)

我尝试更改为...

function LinkTab(link){
    // See https://material-ui.com/guides/composition/#caveat-with-refs
    const MyLink = React.forwardRef((props, ref) => <NavLink {...props} ref={ref} />);
    return <Tab component={MyLink}
        to={link.link}
        label={link.label}
        value={link.link}
        key={link.link}
    />;
}

但我仍然收到警告。我该如何解决这个问题?

最佳答案

只需将其指定为innerRef

// Client.js
<Input innerRef={inputRef} />

将其用作引用

// Input.js
const Input = ({ innerRef }) => {
  return (
    <div>
      <input ref={innerRef} />
    </div>
  )
}

关于reactjs - 使用react-router-dom时如何避免 'Function components cannot be given refs'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56484686/

相关文章:

css - 在普通 css 上设计 material-ui TextField 组件的 underlineFocusStyle

javascript - 以编程方式添加处理程序以响应表单处理程序

javascript - 将 onchange 事件监听器附加到文本区域

ruby-on-rails - Rails 不呈现 public/index.html 文件;浏览器中的空白页面

javascript - 异步 IndexRoute 不加载 react 路由器

javascript - ClickAwayListener 不适用于折叠或淡入淡出过渡

reactjs - 如何在 Material UI-5 的 styled() 中同时传递主题和 Prop ?

Django 表单与 ReactJS

javascript - enzyme hasClass 返回 false 是错误的

javascript - 函数组件不支持contextType