Я использую reason-apollo, и у меня проблемы с установкой refetchQueries. Моя настройка очень похожа на пример подкачки здесь. У меня есть список и форма для добавления нового элемента через мутацию. После успешной мутации я хочу повторно выбрать элементы в листинге. Мой код для создания нового элемента выглядит так (пропуская часть нерелевантного кода пользовательского интерфейса):
module CreateFilm = [%graphql
{|
mutation createFilm($name: String!, $favourite: Boolean!, $rating: Int!, $ratedOn: DateTime!) {
createFilm(name: $name, favourite: $favourite, rating: $rating, ratedOn: $ratedOn) {
id
favourite
name
rating
}
}
|}
];
module CreateFilmMutation = ReasonApollo.CreateMutation(CreateFilm);
type state = {
favourite: bool,
rating: int,
};
type action =
| ToggleFavourite
| UpdateRating(int);
let component = ReasonReact.reducerComponent("FilmNew");
let make = _children => {
...component,
initialState: () => {favourite: true, rating: 5},
reducer: action =>
switch (action) {
| ToggleFavourite => (
state => ReasonReact.Update({...state, favourite: ! state.favourite})
)
| UpdateRating(newRating) => (
state => ReasonReact.Update({...state, rating: newRating})
)
},
render: ({state, send}) => {
let now = Js.Date.make() |> Js.Date.toISOString |> Js.Json.string;
let newFilm =
CreateFilm.make(
~name = "Temporary test",
~rating=state.rating,
~favourite=state.favourite,
~ratedOn=now,
(),
);
<CreateFilmMutation>
...(
(mutation, _result) =>
<form
onSubmit=(
event => {
ReactEventRe.Synthetic.preventDefault(event);
mutation(
~refetchQueries=[|"allFilms"|],
~variables=newFilm##variables,
(),
)
|> ignore;
}
)>
<input
className = "toggle"
_type = "checkbox"
checked=state.favourite
onChange=((_) => send(ToggleFavourite))
/>
("is favourite" |> ReasonReact.string)
<input _type = "submit" value = "Submit" />
</form>
)
</CreateFilmMutation>;
},
};
Фильм успешно добавлен, и я вижу его в листинге (который использует запрос allFilms), когда страница обновляется. Но refetchQueries вроде не действует. Мой бэкэнд использует graph.cool, аналогично примеру swapi в документации. Любая помощь приветствуется, спасибо!





Проблема была не в мутации, а в запросе, который я хотел обновить - ему не хватало имени операции graphql ?♂️