Горизонтальная автоматическая прокрутка до компонента React

У меня есть приложение 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>
    );
  }
}

Любая помощь приветствуется!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
3 141
1

Ответы 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, а не в React Native?

Nathan Lauer 17.08.2018 15:39

Эх, извините, я привел вам родной пример на деле. А что насчет этого поста? Это может дать некоторые подсказки: stackoverflow.com/questions/30495062/…

gazdagergo 18.08.2018 20:11

Другие вопросы по теме