2016-04-14 6 views
1

Действительно новой среагировать, так что простите меня, если это на странице 1 книги ...Реагировать горизонтальную полосу прокрутки

У меня есть небольшие перетащить образец работой в React. Я могу перетащить <div> со дна моей страницы в «цель» <div> вверху. Обработчик календаря изменяет состояние, и убранный элемент появляется в целевом объекте.

Все сброшенные элементы отображаются в объекте один за другим, по горизонтали.

И есть проблема: я хочу, чтобы цель div прокручивала весь путь вправо, чтобы показать мне тот, который я только что уронил.

Я добавил код моему обработчику, который нашел цель (через refs) и установил scrollLeft большому числу. Он вызывает свиток, но не до конца. Я предполагаю, что это потому, что я устанавливаю scrollLeft на элемент перед его визуализацией с новым состоянием, и поэтому он установлен на «предыдущий максимум».

Может ли кто-нибудь указать мне правильное направление?

+0

Когда вы звоните scrollLeft? Если вы используете setState, он выполняет необязательный обратный вызов, который запускается после завершения рендеринга. – LodeRunner28

+0

@ LodeRunner28 Brilliant - если вы ответите на необязательный второй аргумент 'setState', я его приму - исправила свою проблему. – John3136

ответ

2

this.setState принимает второй необязательный параметр, который является обратным вызовом, который запускается после завершения рендера.

Например,

this.setState({ /* your state */ }, function() { 
    ... 
    this.refs.yourRef.scrollLeft = /* someValue */; 
}); 
+1

Для этого я присвою значение scrollLeft, как показано ниже: 'this.refs.yourRef.scrollLeft = ' – ajduke

+1

Почему этот принятый ответ, когда scrollLeft не является функцией, а является свойством? – Foxhoundn

Смежные вопросы