在React

时间:2019-06-11 12:12:31

标签: reactjs react-input-autosize

我正在使用一个名为react-input-autosize的组件。我面临的问题是,它不会在调整视口大小时调整输入的大小,因此,我将不希望手动挂钩到组件方法并运行copyInputStyles()updateInputWidth()

React很新,所以不知道如何实现。您可以通过inputRef公开输入,但这对我没有帮助吗?

我当前的简化测试用例看起来像这样,对如何运行组件方法的任何指示都感到满意。

    import React from 'react';
    import styled from '@emotion/styled';
    import AutosizeInput from 'react-input-autosize';
    import {throttle} from 'lodash';


    const StyledAutosizeInput = styled(AutosizeInput)`
      max-width: 100vw;
    `;

    export default class signUp extends React.Component {
      constructor (props) {
        super(props);
        this.inputRef = React.createRef();
      }

      componentDidMount() {
        console.log(this.inputRef); // outputs input node
        window.addEventListener('resize', this.resize);
        this.resize();
      }

      componentWillUnmount() {
        window.removeEventListener('resize', this.resize);
      }

      resize = throttle(() => {
        console.log('force resize');
      }, 100);

      render() {
        return (
          <StyledAutosizeInput
            inputRef={node => this.inputRef = node}
          />
        );
      }
    }

1 个答案:

答案 0 :(得分:2)

""" Comments """" 回调is referring to the html input element,而不是AutosizeInput组件。通过inputRef={node => this.inputRef = node}属性传递引用以访问组件的方法。

ref