我有以下(使用material 界面)....

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}
    />;
}

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

警告:不能为功能组件提供参考.试图访问

判断渲染方法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}
    />;
}

但我还是得到了警告.如何解决这个问题?

推荐答案

NavLink from react-router是一个功能组件,是Link的一个专门版本,它为此公开了一个innerRefprops .

// required for react-router-dom < 6.0.0
// see https://github.com/ReactTraining/react-router/issues/6056#issuecomment-435524678
const MyLink = React.forwardRef((props, ref) => <NavLink innerRef={ref} {...props} />);

你也可以在我们的文档中搜索react-router,然后找到https://mui.com/getting-started/faq/#how-do-i-use-react-router,链接到https://mui.com/components/buttons/#third-party-routing-library.最后一个链接提供了一个工作示例,并解释了这在react router v6中可能发生的变化

Reactjs相关问答推荐

react 路由导航不工作,但手动路由工作

以下代码是否存在安全问题?

如何在react 流中使用文本区域和改变 node 的输入大小?

如何使数据库数据在第一次呈现时显示?

在transformResponse中使用来自其他查询的缓存

定位数组中的一项(React、useState)

如何测试根据 prop 更改 CSS 属性的 useEffect 钩子?

使用获取的数据更新状态,但在try console.log 时它给出未定义

React useContext 的未定义返回值

如何在 React 中停止嵌套 Link 和 Button 组件的事件传播?

Material UI @mui/material/Button vs @material-ui/core/Button,它什么时候改变的,旧版本的文档在哪里

字段是必需的,当它没有定义时

useEffect 渲染没有依赖数组的组件

当每个元素都可拖动时,移动设备上的滚动列表出现问题

使用 Vite 的 React 中的路由无法正常工作(构建中)

如何在 nextjs 中单击按钮时动态导入和渲染组件?

添加 React/Redux 组件模板的 VS Code 扩展

如何根据数据库中的值设置单选按钮选中? - react

react 路由路由加载器不适用于嵌套组件

如果两个组件在 React 中导入相同的 CSS 文件会发生什么?