Пример константности объекта 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 будет проходить через каждый элемент, на который влияет переход.

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