【问题标题】:Horizontal auto scroll to a React Component水平自动滚动到 React 组件
【发布时间】:2019-01-24 01:20:41
【问题描述】:

我有一个 React 应用程序,我在其中呈现水平列表选秀。在任何时间点,一个选秀权处于活动状态,但在某个时间点进行了选秀,然后下一个选秀权开始生效。当下一个变为活动状态时,我希望列表水平自动滚动,以便始终显示活动选择。

我确定以前有人问过这个问题,但我真的不知道如何使 React 组件发生自动滚动事件。

这是我的代码:

DraftOrder.js:

class DraftOrder extends React.Component {
  render() {
    return (
      <React.Fragment>
        <div className="d-flex flex-row auto-scroll-x">
          {this.props.draftPicks.map(aDraftPick => {
            return <ADraftPickInOrder key={v4()} draftPick={aDraftPick} team={this.props.team} />
          })}
        </div>
      </React.Fragment>
    );
  }
}

ADraftPickInOrder.js:

class ADraftPickInOrder extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      active: this.props.draftPick.active
    }
    this.renderUserName = this.renderUserName.bind(this);
    this.renderDraftedPlayer = this.renderDraftedPlayer.bind(this);
  }


  renderUserName() {
     ...
  }

  renderDraftedPlayer() {
    ...
  }

  render() {
    return (
      <div className="text-center px-3">
        <div className={classnames("font-weight-bold no-wrap", { "text-success" : this.props.draftPick.team.id === this.props.team.id } )}>{this.props.draftPick.team.name}</div>
        {this.renderUserName()}
        {this.renderDraftedPlayer()}
        <div><small>{formatDraftPickNumber(this.props.draftPick)}</small></div>
      </div>
    );
  }
}

任何帮助将不胜感激!

【问题讨论】:

    标签: reactjs horizontal-scrolling autoscroll


    【解决方案1】:

    使用 ScrollView 和它的 scrollTo 方法:

    import { ScrollView } from 'react-native';
    
    ...
    
    setScrollViewRef = ref => {
      this.scrollView = ref;
    };
    
    handlePress = ({nativeEvent}) => {
      const { pageX, pageY } = nativeEvent;
      // find out x and y somehow
      this.scrollView.scrollTo({x, y, animated: true})
    }
    
    
    render() {
      <ScrollView
        horizontal 
        ref={this.setScrollViewRef}
        showsHorizontalScrollIndicator={false}>
         <DraftPick onPress={this.handlePress} />
         <DraftPick onPress={this.handlePress} />
         ...
      </ScrollView>
    }
    

    【讨论】:

    • 在 React Web 应用程序中是否有等效的方法来实现这一点,而不是 React Native?
    • 哦,对不起,我确实给了你一个本地例子。这个帖子呢?它可能会给出一些提示:stackoverflow.com/questions/30495062/…
    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 2014-01-03
    相关资源
    最近更新 更多