Sử dụng phiên bản hiện tại của graphql
thành phần bậc cao hơn trong react-apollo
(v0.5.2), tôi không thấy cách tài liệu để thông báo cho UI của tôi rằng đột biến là đang chờ phản hồi của máy chủ. Tôi có thể thấy rằng earlier versions of the package sẽ gửi thuộc tính cho biết đang tải.Cách xác định trạng thái tải đột biến với graphql phản ứng-apollo
Queries vẫn nhận được một tài sản bốc như tài liệu ở đây: http://dev.apollodata.com/react/queries.html#default-result-props
ứng dụng của tôi cũng đang sử dụng Redux, vì vậy tôi nghĩ rằng một trong những cách để làm điều đó là để kết nối thành phần của tôi để Redux và vượt qua xuống một tài sản chức năng mà sẽ đưa giao diện người dùng của tôi vào trạng thái tải. Sau đó, khi viết lại biến thể graphql của tôi thành thuộc tính, tôi có thể thực hiện cuộc gọi để cập nhật kho lưu trữ redux.
Something gần như thế này:
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));
tôi tò mò nếu có một cách tiếp cận nhiều thành ngữ để thông báo cho giao diện người dùng rằng đột biến là "trên máy bay." Cảm ơn.
Hỏi chính xác cùng một câu hỏi (* redux + apollo client: trạng thái tải đột biến *). Ngày nay (* vài tuần sau *) Tôi không tìm thấy bất kỳ manh mối nào khác về nó. Tôi vẫn sử dụng cách tiếp cận tương tự như của bạn ... – MacKentoch
Các đột biến được gọi từ bên trong chính thành phần đó. Những gì nói chống lại việc thiết lập trạng thái tải tùy chỉnh của bạn thành true trước khi chạy đột biến, và sau khi đột biến đã trả về, thiết lập nó thành false một lần nữa? – marktani
Xin cảm ơn, @marktani. Yeah, điều này đã làm nó là ok. Với phản ứng-apollo, các truy vấn sẽ tự động thiết lập thuộc tính tải khi yêu cầu là trên máy bay, vì vậy tôi muốn đảm bảo rằng tôi không thiếu một cách tích hợp để làm điều tương tự cho các đột biến. – rmarscher