У меня есть запрос, который принимает массив идентификаторов в качестве параметра. В массиве я могу добавлять или удалять идентификаторы на основе выбранных документов.
Проблема в том, что он не запускает запрос при каждом изменении массива id, но я не понимаю, почему.
Я также пытался изменить запрос options.fetchPolicy на network-only и no-cache, но это не сработало.
Это мой запрос:
const GET_DATA = gql`
query docs($selectedDocs: [ID]) {
docs(selectedDocs: $selectedDocs) {
_id
name
description
}
}
`;
А это функция рендеринга компонента:
render() {
const { selectedDocs } = this.props;
console.info(selectedDocs)
return (
<Query
query = {GET_DATA}
variables = {{ selectedDocs }}
fetchPolicy = "network-only"
// fetchPolicy = "no-cache"
notifyOnNetworkStatusChange
>
{({ loading, error, data, refetch, networkStatus }) => {
if (loading) return "Loading...";
if (error) return "Error!";
console.info(data);
return (
<div>
docs list
</div>
)
}}
</Query>
);
}
Это метод рендеринга родительского компонента:
render() {
const { selectedDocs } = this.state;
return (
<Docs
selectedDocs = {selectedDocs}
/>
)
}
Я передаю selectedDocs в качестве реквизита. я обновил вопрос
console.info(selectedDocs) срабатывает каждый раз, когда вы меняете опору?
Да и содержание у него правильное!
@Stefano, это хорошо, так что вы видите сетевой запрос на сетевой панели DevTools каждый раз, когда вы меняете опору? (fetchPolicy должен оставаться «только для сети»)
Нет, проблема в том, что я не вижу запрос в сетевой панели каждый раз, когда я меняю проп
Вы видите список документов после первого запроса? а может этот запрос висит с какой-то ошибкой?
Да, в первый раз он точно выполняет запрос. А также в других случаях, когда изменяется реквизит, он запускает запрос, но не каждый раз.
Извините, мои идеи закончились. Не уверен, в чем может быть проблема... Если только клиент как-то неправильно настроен. Никогда не было такой проблемы, как у вас.





Можете ли вы показать рендеринг вашего родительского компонента и как передаются
selectedDocs