Когда использовать enter / leave с функцией `visit` в `graphql`

#graphql #graphql-js

#graphql #graphql-js

Вопрос:

Я пытаюсь удалить некоторые узлы из ast graphql с помощью функции visit.

Как и сказано в документе, есть два события, к которым я могу подключиться

  • введите
  • оставить

Я не знаю, когда использовать enter, а когда использовать leave, в чем разница между ними? Как я могу определить, какой из них использовать?

Ответ №1:

Основное отличие заключается в том, что enter () позволяет пропустить поддерево, если оно вас не волнует.

На этой странице есть раздел https://graphql.org/graphql-js/language/#visitor это описывает возвращаемые значения, разрешенные enter() и leave() .

Другая причина использования leave () заключается в том, что если вы изменили поддерево, вы можете просмотреть измененное поддерево, поскольку оно было обработано.