РЕДАКТИРОВАТЬ: я пропустил тот факт, что я использовал getSpotSearchResponse в другом месте без передачи объекта параметров. Пример ниже должен работать.
Я пытаюсь отделить запросы graphql от друг друга, передавая параметры с помощью частично примененной функции. Однако я получаю следующее предупреждение:
Warning: Functions are not valid as a React child. This may happen if you return a Component instead of <Component /> from render. Or maybe you meant to call this function rather than return it.
Представительные компоненты, связанные с запросом, объявленным в getSpotSearchResponse.js, не отображаются (как и ожидалось). Как бы вы обошли эту проблему?
SpotGridContainer.js
export const SpotGridContainer = compose(
getSelectedPlace,
getSpotSearchResponse({
variables: ({ SelectedPlace }) => ({
input: {
center: SelectedPlace
// contains the result from GET_SELECTED_PLACE
}
})
}),
)(SpotGrid);
getSelectedPlace.js
SelectedPlace является результатом запроса GET_SELECTED_PLACE и передается в качестве реквизита для следующего graphql HOC.
export const getSelectedPlace = graphql(GET_SELECTED_PLACE, {
props: ({ data: { SelectedPlace } }) => ({ SelectedPlace })
});
getSpotSearchResponse.js
Объект параметров передается из SpotGridContainer.js и возвращается графическая HOC.
export const getSpotSearchResponse = options =>
graphql(GET_SPOT_SEARCH_RESPONSE, {
props: ({ data: { spots } }) => ({ spots }),
options
});