Операция FooQuery, обертывающая Foo, ожидает переменную, но она не была найдена с помощью response-apollo

У меня проблема с react-apollo. Даже не вызывая запрос в классе Foo:

The operation 'FooQuery' wrapping 'Foo' is expecting a variable: 'id' but it was not found in the props passed to 'Apollo(Foo)'

class Foo extends React.Component {
    render() {
        return <div />
    }
}

const FOO_QUERY = gql`
    query FooQuery($id: ID!) {
        foo(id: $id) {
            bar
        }
    }
`

export default graphql(FOO_QUERY, { name: 'fooQuery' })(Foo)

Не следует ли передавать в запрос переменную id вместо name?

Tholle 10.07.2018 14:07

Это свойство, позволяющее настроить имя опоры. Так что я могу вызвать: this.props.fooQuery

Andrey 10.07.2018 14:17

Ты прав, моя беда. Как вы используете этот компонент? Вы передаете ему опору id?

Tholle 10.07.2018 14:19

Пробую Foo.propTypes = { id: PropTypes.string.isRequired } и Foo.defaultProps = { id: 'a' }. Тот же результат

Andrey 10.07.2018 14:23

Да, но я думаю, что проблема в том, как вы используете этот экспортированный компонент в остальной части приложения, а не в том, как вы его определили. Если вы используете компонент, не передавая опору id, я думаю, вы получите эту ошибку.

Tholle 10.07.2018 14:25

@Tholle Работает как шарм, спасибо!

Andrey 10.07.2018 14:41

@Tholle, как сделать id необязательным? Я пытаюсь создать форму, в которой пользователь может вставлять или обновлять

Andrey 10.07.2018 21:05
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
7
479
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш компонент выглядит правильно. Проблема не в том, как вы его определили, но вы должны убедиться, что передаете опору id вашему компоненту Foo, когда используете его в своем приложении:

<Foo id = "some_id" />

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