通过一个ref React访问几个元素

时间:2018-05-09 12:08:17

标签: javascript reactjs ref react-dom

我希望使用refs功能访问多个元素。然后我可以迭代this.tabs的元素。下面的代码不起作用,如何解决它的工作?我现在使用的解决方案是document.querySelectorAll('tabs'),但它似乎不适合React。

class Comp extends React.Component {
  constructor(props) {
    super(props);
    
    this.tabs = React.createRef();
  }
  
  componentDidMount() {
    console.log(this.tabs);
  }


  render() {
    return (
      <div>
        <span class="tab" ref={this.tabs}>One</span>
        <span class="tab" ref={this.tabs}>Two</span>
        <span class="tab" ref={this.tabs}>Three</span>
      </div>
    );
  }
}

ReactDOM.render(
  <Comp />,
  document.getElementById('app')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>

1 个答案:

答案 0 :(得分:4)

您指定的refs方式不正确。在render()方法的早期开始:

this.tabs = []

refs将通过

分配
<span className="tab" ref={(tab) => { this.tabs.push(tab) }}>One</span>

我希望你能打电话给this.tabs这个案子!