React Styled Components - 如何访问原始html

时间:2017-03-01 11:36:05

标签: javascript css reactjs styled-components

我在我的应用中转换为styled component的组件。 ref用于访问组件的原始html元素上的offsetHeight和scrollHeight属性。一旦我将这个组件切换到样式组件,ref现在指向样式组件而不是原始html元素,我不确定如何引用基本元素。可以这样做吗?

示例:

const TextArea = styled.textarea`
  display: block;
  margin: 0 0 0 18%;
  padding: 4px 6px;
  width: 64%;
  font-size: 1rem;
  color: #111;`;

export default class Input extends Component {
  componentDidMount() {
    const height = this.textInput.scrollHeight;
    // do something....
  }
  render() {
    return (
      <div>
        <TextArea
          ref={(input) => this.textInput = input}
        ></TextArea>
      </div>
    );
  }
}

2 个答案:

答案 0 :(得分:19)

ref传递给样式化组件将为您提供styled-components包装器的引用,而不是DOM节点。要获得实际DOM节点的参考传递innerRef prop 。 (见the docs

这是你需要做的:

const TextArea = styled.textarea``;

export default class Input extends Component {
  componentDidMount() {
    const height = this.textInput.scrollHeight;
    // do something....
  }
  render() {
    return (
      <div>
        <TextArea
          innerRef={(input) => this.textInput = input}
        ></TextArea>
      </div>
    );
  }
}

答案 1 :(得分:0)

是的,可以做到。您可以使用ReactDOM.findDOMNode()访问原始html。但是,请记住不鼓励使用这种方法。您可以在引用的页面中阅读更多相关信息。