Używając aktualnej wersji komponentu wyższego rzędu graphql
w react-apollo
(v0.5.2), nie widzę udokumentowanego sposobu poinformowania mojego interfejsu użytkownika, że mutacja jest oczekiwanie na odpowiedź serwera. Widzę, że earlier versions of the package wyśle właściwość wskazującą ładowanie.Jak określić stan obciążenia mutacji za pomocą reagującego apollo grafql
Zapytania nadal otrzymywać właściwość załadowczy udokumentowane tutaj: http://dev.apollodata.com/react/queries.html#default-result-props
Moja aplikacja jest również za pomocą Redux, więc myślę, że jednym ze sposobów, aby to zrobić, to podłączyć mój składnik do Redux i przechodzą w dół własności funkcji, które umożliwią mój interfejs do stanu ładowania. Następnie, podczas przepisywania mojej mutacji grafql do właściwości, mogę wykonywać połączenia, aby zaktualizować sklep redux.
Coś mniej więcej tak:
function Form({ handleSubmit, loading, handleChange, value }) {
return (
<form onSubmit={handleSubmit}>
<input
name="something"
value={value}
onChange={handleChange}
disabled={loading}
/>
<button type="submit" disabled={loading}>
{loading ? 'Loading...' : 'Submit'}
</button>
</form>
);
}
const withSubmit = graphql(
gql`
mutation submit($something : String) {
submit(something : $something) {
id
something
}
}
`,
{
props: ({ ownProps, mutate }) => ({
async handleSubmit() {
ownProps.setLoading(true);
try {
const result = await mutate();
} catch (err) {
// @todo handle error here
}
ownProps.setLoading(false);
},
}),
}
);
const withLoading = connect(
(state) => ({ loading: state.loading }),
(dispatch) => ({
setLoading(loading) {
dispatch(loadingAction(loading));
},
})
);
export default withLoading(withSubmit(Form));
Jestem ciekawy, czy istnieje bardziej idiomatyczne podejście do informowania UI, że mutacja jest „w locie”. Dzięki.
Zadaj sobie dokładnie to samo pytanie (* redux + klient apollo: stan ładowania mutacji *). W dzisiejszych czasach (* kilka tygodni później *) nie znalazłem więcej informacji na ten temat. Nadal używam tego samego podejścia, co Ty ... – MacKentoch
Mutacje są wywoływane z poziomu samego komponentu. Co przemawia przeciwko ustawianiu niestandardowego stanu ładowania na true przed uruchomieniem mutacji i po tym, jak mutacja powróciła ponownie ustawiając go na wartość false? – marktani
Dzięki, @marktani. Tak, to było robienie tego jest w porządku. Dzięki funkcji response-apollo zapytania automatycznie ustawiają właściwość ładowania, gdy żądanie jest w trakcie lotu, więc chciałem upewnić się, że nie brakuje mi wbudowanego sposobu, aby zrobić to samo dla mutacji. – rmarscher