首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用forwardRef的React - Forwarding道具

使用forwardRef的React - Forwarding道具
EN

Stack Overflow用户
提问于 2020-11-13 17:29:14
回答 1查看 378关注 0票数 0

我想定义一个LinkButton组件,它的行为将像一个链接,看起来像一个按钮。

我的基本实现抱怨我需要使用React.forwardRef,但是我不确定如何正确地做到这一点,特别是在使用prop转发时。

即使我只是输入道具作为any,我仍然收到来自系统的投诉,说道具无效。

我想知道在这种(或任何)情况下如何正确使用forwardRef。

我的尝试如下所示:

代码语言:javascript
复制
import React from 'react'
import styles from './styles'
import { Button, withStyles } from '@material-ui/core'
import { Link } from 'react-router-dom'

interface IProps {
  classes: any
  to: string
  children: string
}

const NextLink = ({ to, ...rest }: any) => <Link to={to} {...rest} />

const LinkButton = React.forwardRef((props: any, ref: any) => {
  const { classes, children, ...rest } = props // <-- ISSUE BECAUSE OF rest PROP
  return (
    <Button
      ref={ref}
      role='nextButton'
      className={classes.root}
      classes={{ disabled: classes.disabled }}
      component={NextLink}
      {...rest}
    >
      {children}
    </Button>
  )
})
LinkButton.displayName = 'LinkButton'

export default withStyles(styles)(LinkButton)

------------

It would be called like this:

 <LinkButton to='/' color='secondary'>
    {`Go Home`}
 </LinkButton>
EN

回答 1

Stack Overflow用户

发布于 2020-11-13 17:46:40

通过将NextLink也包装在forwardRef中,我能够解决这个问题。

代码语言:javascript
复制
const NextLink = React.forwardRef(({ to, ...rest }: any, ref: any) => (
  <Link ref={ref} to={to} {...rest} />
))
NextLink.displayName = 'NextLink'
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64818452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档