Jeśli używam aplikacji redux i klienta apollo w mojej aplikacji, jaki jest najlepszy sposób wyzwolenia zapytania z działania poza komponentem.Jak wywołać zapytanie klienta apollo z akcji redux
Na przykład, jeśli mam standardową aplikację, z konfiguracją klienta redux i apollo, w jaki sposób powinienem wyzwolić listę "odświeżania". Mogę wywołać funkcję na samym komponencie, który ma gql, ale jak zrobiłbym to z działania, które byłoby bardziej zgodne z topnikiem.
import React, { Component, PropTypes } from 'react';
import { graphql } from 'react-apollo';
import gql from 'graphql-tag';
import { connect } from 'react-redux';
import { refreshProfile } from './actions';
class Profile extends Component { ... }
Profile.propTypes = {
data: PropTypes.shape({
loading: PropTypes.bool.isRequired,
user: PropTypes.object,
}).isRequired,
};
const UserQuery = gql`
query getUser {
user {
id
name
}
}
`;
const ProfileWithData = graphql(UserQuery)(Profile);
const ProfileWithDataAndState = connect(
(state) => ({ user: state.user })),
)(ProfileWithData);
Powiedzmy, że chcę wywołać akcję, aby odświeżyć dane użytkownika? Ponieważ logika znajduje się w samym komponencie, nie jestem pewien, w jaki sposób wyzwoliłbym kwerendę gql z samej akcji.
Czy znalazłeś sposób, aby to zrobić? –
tak, możesz po prostu użyć klienta apollo bezpośrednio jak w moim przykładowym kodzie w odpowiedzi. – MonkeyBonkey
A z innych komponentów? 'withApollo'? –