Справочная информация: Я работаю над созданием мобильного приложения с реактивной поддержкой и настраиваю AppSync AWS для синхронизации приложения с облачными источниками данных.
Задача : у меня есть представление, которое показывает все элементы в списке.Идентификатор списка передается как компонент для компонента.Мне нужно использовать этот идентификатор списка для запроса элементов этого списка.У меня нормально работает запрос, если я жестко закодирую идентификатор списка, но мне трудно понять, как динамически установить идентификатор списка для запроса при обновлении реквизита.
Вот что у меня работает (с жестко заданным идентификатором testList01) в моем ListPage компоненте:
const getListItems = id => gql`
query getListItems {
getListItems(listID: ${id}) {
reference_id,
quantity,
}
}
`;
export default graphql(getListItems('testList01'), {
options: {
fetchPolicy: 'cache-and-network',
},
props: props => ({
listItems: props.data ? props.data.getListItems : [],
data: props.data,
}),
})(withNavigationFocus(ListPage));
Я хотел бы иметь возможность динамически устанавливатькакой список для поиска элементов на основе идентификатора списка, который передается из реквизита.В частности, я использую реагирующую навигацию для входа в ListPage, представление, где пользователь может видеть элементы списка.Итак, вот код, который выполняется, когда пользователь нажимает на имя списка и направляется в компонент ListPage:
handleListSelection(list: Object) {
const { navigation, userLists } = this.props;
navigation.navigate('ListPage', {
listID: list.record_id,
listName: list.list_name,
userLists,
});
}
Из моей предыдущей (pre-AppSync / GraphQL) реализации я знаю, что могу получить доступидентификатор списка в ListPage через this.props.navigation.state.params.listID
.Я хотел бы иметь возможность использовать это в своем запросе AppSync, но так как запрос создается вне компонента, я не могу получить доступ к реквизитам, и поэтому изо всех сил пытаюсь получить идентификатор.