Использование текущей версии компонента более высокого порядка в react-apollo
(v0.5.2), я не вижу документально подтвержденного способа сообщить своему пользовательскому интерфейсу, что мутация ожидая ответа сервера. Я вижу, что earlier versions of the package отправит свойство, указывающее на загрузку.Как определить состояние загрузки мутации с помощью реакции-apollo graphql
Запросы по-прежнему получать свойство загрузки как описано здесь: http://dev.apollodata.com/react/queries.html#default-result-props
Мое приложение также использует Redux, так что я думаю, что один из способов сделать это, чтобы подключить компонент к Redux и передать вниз функцию собственности, которая поместит мой пользовательский интерфейс в состоянии загрузки. Затем, переписывая мою мутацию graphql в свойство, я могу совершать звонки, чтобы обновить хранилище redux.
Что-то примерно так:
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));
Мне интересно, если есть более идиоматический подход к информированию UI, что мутация «в полете». Благодарю.
Задавая себе тот же вопрос (* redux + клиент apollo: состояние загрузки мутации *). В настоящее время (* несколько недель спустя *) я больше не знал об этом. Я по-прежнему использую тот же подход, что и ваш ... – MacKentoch
Мутации вызываются из самого компонента. Что говорит против установки вашего пользовательского состояния загрузки в true до запуска мутации, и после того, как мутация вернулась, она снова установила значение false? – marktani
Спасибо, @marktani. Да, это было сделано, все в порядке. При реакции-apollo запросы автоматически устанавливают свойство загрузки, когда запрос находится в полете, поэтому я хотел убедиться, что у меня не было встроенного способа сделать то же самое для мутаций. – rmarscher