Я чрезвычайно новичок в GraphQL и хочу передать свой массив данных как мутацию, чтобы обновить все мои данные. Каждый объект в массиве имеет свойство id и body. Я использую React Native и Apollo и использую Graph.cool для своих схем (я знаю, что Graph.cool скоро исчезнет, но я просто использую его, чтобы узнать, как работает GraphQL). Вот мой код:
const EditScheduleScreen = ({ ScheduleQuery, SubmitSchedule, navigation }) => {
const [schedule, setSchedule] = useState(ScheduleQuery.allPosts);
const submitSchedule = () => {
SubmitSchedule({
variables: {
body: schedule.body,
id: schedule.id
}
}).then(() => {
navigation.pop();
}).catch(error => {
console.log(error);
})
}
useEffect(() => {
navigation.setParams({ submit: submitSchedule });
}, []);
if (ScheduleQuery.loading) {
return <ActivityIndicator size="large" />
}
}
EditScheduleScreen.navigationOptions = ({ navigation }) => ({
title: 'Edit Schedule',
headerStyle: {
backgroundColor: 'rgb(34, 33, 33)'
},
headerTintColor: '#F5F5F5',
headerRight: <TouchableOpacity onPress={() => {
const submit = navigation.getParam('submit');
console.log(submit());
navigation.navigate('Schedule')
}}>
<Feather style={[styles.saveIcon, { marginRight: 15 }]} name="check-circle" />
</TouchableOpacity>
})
const ScheduleQuery = gql`
query ScheduleQuery {
allPosts{
body
id
}
}
`;
const SubmitSchedule = gql`
mutation SubmitSchedule {
allPosts{
id
body
}
}
`
export default compose(
graphql(ScheduleQuery, { name: 'ScheduleQuery' }),
graphql(SubmitSchedule, {
name: 'SubmitSchedule',
options: {
refetchQueries: ["ScheduleQuery"]
}
})
)(EditScheduleScreen);
Примечание. Я удалил оператор возврата из компонента, поскольку он не имеет отношения к проблеме. Я знаю, что моя мутация неправильная, я просто не знаю, что делать. Нужно ли создавать новую схему в graph.cool, или я делаю что-то другое? Заранее спасибо!