Fragt ein GraphQL-Schema von einer Komponente ab
Greifen Sie auf Datensatzdaten in einer Komponente zu, indem Sie Ihr geskriptetes GraphQL-Schema abfragen.
Vorbereitungen
Prozedur
Beispiel
Dieses Beispiel zeigt eine vollständige Komponente, einschließlich der Abfrage, des GraphQL-API-Aufrufs und der Aktions-Handler zum Verwalten der Antwort.
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 */ },
}
});