在 ref 中反应 ref

React ref in ref

我使用包裹在 styled-component 中的 react-textarea-autosize,像这样:

import React from 'react'
import styled from 'styled-components'
import TextareaAutosize from 'react-textarea-autosize'

const MyTextArea = styled(TextareaAutosize)``

function Component() {
  return (
    <MyTextArea innerRef={...} />
  )
}

我需要获取底层 html textarea 元素的引用。但是,要实现它,我需要:

我理解这两个独立的步骤。但是如何直接从 MyTextArea 组件访问 textarea html 元素?

我找到了答案here。所以,在我的例子中,解决方案是这样的:

import React from 'react'
import styled from 'styled-components'
import TextareaAutosize from 'react-textarea-autosize'

const MyTextArea = styled(
  ({_ref, ...props}) => <TextareaAutosize inputRef={_ref} {...props} />
)``

class Component extends React.Component {
  render() {
    return (
      <MyTextArea innerRef={node => this.textarea = node} />
    )
  }
}

然后在需要的地方使用this.textarea