Interroger un schéma GraphQL à partir d’un composant
Accédez aux données d’enregistrement dans un composant en interrogeant votre schéma GraphQL scripté.
Avant de commencer
Procédure
Exemple
Cet exemple montre un composant complet comprenant la requête, l’appel d’API GraphQL et les gestionnaires d’actions pour gérer la réponse.
import {createCustomElement} from '@servicenow/ui-core';
import snabbdom from '@servicenow/ui-renderer-snabbdom';
import {createGraphQLEffect} from '@servicenow/ui-effect-graphql';
const GQL_QUERY = `
query query ($active: Boolean) {
now {
mySchema (active: $active) {
myField {
value
}
}
}
}`;
const DATA_FETCH_REQUESTED = 'DATA_FETCH_REQUESTED';
const DATA_FETCH_STARTED = 'DATA_FETCH_STARTED';
const DATA_FETCH_SUCCEEDED = 'DATA_FETCH_SUCCEEDED';
const DATA_FETCH_FAILED = 'DATA_FETCH_FAILED';
const dataFetchHandler = createGraphQLEffect(GQL_QUERY, {
variableList: ['active'],
startActionType: DATA_FETCH_STARTED, // gql http request started
successActionType: DATA_FETCH_SUCCEEDED // gql request succeeded with result
errorActionType: DATA_FETCH_FAILED // gql http network request error (actual schema / server errors will succeed with error objects
});
const component = createCustomElement('now-component', {
renderer: {type: snabbdom},
view(state) {
if(state.loading)
return <div>Loading...</div>;
if(!state.data)
return <div>No Data</div>;
return <div>My value: {state.data.data.now.mySchema.myField.value}</div>;
},
actionHandlers: {
[DATA_FETCH_REQUESTED]: dataFetchHandler,
[DATA_FETCH_STARTED]: ({updateState}) => updateState({loading: true}),
[DATA_FETCH_SUCCEEDED]: ({action, updateState}) => updateState({data: action.payload}),
[DATA_FETCH_FAILED]: () => { /* handle network error */ },
}
});