구성요소에서 GraphQL 스키마 쿼리
스크립팅된 GraphQL 스키마를 쿼리하여 구성요소의 기록 데이터에 액세스합니다.
시작하기 전에
프로시저
예
이 예제에서는 쿼리, GraphQL API 호출 및 응답을 관리하기 위한 작업 핸들러를 포함한 전체 구성 요소를 보여줍니다.
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 */ },
}
});