在ref中反应ref

时间:2018-07-21 14:21:14

标签: reactjs styled-components

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

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元素的引用。但是,要实现它,我需要:

  • 可以通过TextareaAutosize'styled-components属性-innerRef
  • 访问<MyTextArea innerRef={textareaResizeable => ...} />组件
  • 可以通过textarea'react-textarea-autosize道具-inputRef
  • 访问html <TextareaAutosize inputRef={textarea => ...} />元素

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

1 个答案:

答案 0 :(得分:1)

我找到了答案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