Пример константности объекта d3 Бостока: каков эффект от d3.transition(). Каждый?
Полная скрипка здесь: https://jsfiddle.net/scottbrown0001/o7qL4dpr/
Я пытаюсь подражать примеру постоянства объектов Майка Бостока https://bost.ocks.org/mike/constancy/, и я не могу понять, что выбрано each()
на его линии строка 133:
function change() {
clearTimeout(timeout);
d3.transition()
.duration(altKey ? 7500 : 750)
.each(redraw);
}
Я использую то, что похоже на ту же конструкцию в моем примере скрипки, и, хотя кажется, что эффект перехода запускается, я не вижу более медленной продолжительности. В общем, что это за конструкция d3.transition.each()
выбрать в конкретной конкретике? Кажется, что это может быть своего рода "мастер-переход", но я не понимаю, как each()
итерация работает. У меня должно быть какое-то ключевое отличие, но я этого не вижу.
1 ответ
Как и в вашем другом вопросе, это связано с d3 v3 против d3 v4. Вы не сможете воспроизвести поведение с этим кодом в v4
Взгляните на этот раздел заметок о выпуске d3 v4, где mbostock рассматривает изменения в transition.each:
Этот метод заменяет глубоко волшебное поведение transition.each в 3.x; в 4.0, transition.each идентичен selection.each
В версии 3 файл transition.each отличался от описанного здесь: https://github.com/d3/d3-3.x-api-reference/blob/master/Transitions.md#each
[...] немедленно вызывает указанную функцию для каждого элемента в текущем переходе, передавая текущий элемент данных d и индекс i с контекстом this текущего элемента DOM.
Таким образом, в основном причина того, что он работает не так, заключается в том, что сейчас transition.each будет проходить через каждый элемент, на который влияет переход.