#reactjs #regex #graphql #graphql-js #graphiql
Вопрос:
Я тестировал запросы с помощью GraphiQL explorer, который возвращал нужные мне результаты, используя регулярное выражение, выделенное красным цветом ниже.
Вы можете видеть, что он возвращает результаты и генерирует код для react в крайнем правом углу снимка экрана. Я надеялся, что это сразу сработает с копированием и вставкой, но, по-видимому, вам нужно избежать регулярного выражения в строке литерала шаблона (почему обозреватель кода не делает этого, если вам все равно нужно его избежать?)
Ниже приведены результаты, если вы попытаетесь добавить код так, как он был сгенерирован.
Через некоторые поисковые запросы и проблемы с GitHub я обнаружил, что регулярное выражение должно быть дважды экранировано. Смотрите обновление для исправления ниже. Ссылка на регулярное выражение PR
Добавил изменение в мое регулярное выражение, и оно остановило предыдущую ошибку. Но сейчас это не дает никаких результатов..
Обновлено регулярное выражение ->
Никаких результатов ->
Я пытался использовать переменные для введения исходного регулярного выражения в строку литерала шаблона, но безрезультатно, так как, по-видимому, вы не можете сделать это с GraphQL. У кого-нибудь была эта проблема или вы хотели поделиться идеей/решением ?
Комментарии:
1. В регулярных выражениях нет ничего особенного, но у вас есть обратные косые черты внутри
gql
строки шаблона (), которую вам нужно экранировать. Да, использование переменной было бы намного проще, чем указание строкового литерала в строке запроса.2. @Bergi Я думал, что пиар, который они сделали, — это избежать обратной косой черты. Знаете ли вы, как обойти это без использования переменной, поскольку она не допускает интерполяцию строк
3. Нет, PR, на который вы ссылаетесь, исправил код, который без необходимости удалял экранирование. Код на самом деле просто обрезает
/
строку и передает ееRegExp
конструктору, чтоnew RegExp("\d")
эквивалентно/d/
.4. Что вы подразумеваете под » он не допускает интерполяцию строк «?
5. Кстати, использование
regex: ${ JSON.stringify(/d-/d/.toString()) }
должно работать