-
graphql+react 변수를 가지고 Mutation 실행하기개발 2020. 2. 26. 20:46
const mutation = gql` mutation AddSong($title:String){ addSong(title:$title){ title } } `; export default graphql(mutation)(SongCreate);
지난번 쿼리 처럼 react-apollo의 graphql 함수를 활용해 mutation문을 사용해 Songcreate 라는 컴포넌트에
연결시켰다. 문제는 별개인 컴포넌트(SongCreate) 와 mutation 쿼리 둘사이에서
컴포넌트가 mutation에게 title이라는 변수를 줘야한다는것이다.
우선 이렇게 되면 컴포넌트의 this.props에 mutate 라는 함수가 prop에 생긴다
이 mutate를 사용해서 별개인 컴포넌트와 mutation 쿼리 사이에 연결이 가능해져
변수를 줄수가있어진다.
this.props.mutate({ variables:{ title:this.state.title } });
또한 해당 mutation을 실행시켜 서버와 작용한다.
mutation은 서버와 작용후에 결과값을 리턴한다. true false 든 어떤 데이터든 혹은 에러가 발생시 에러가 리턴될것이다.
이를 then 을 활용하면 가능 하다
this.props.mutate({ variables:{ title:this.state.title } }).then((data)=>{ console.log(data); hashHistory.push('/'); });
그럼 만약 한 컴포넌트에서 mutation과 쿼리를 동시에 사용하려면 어떻게할까?
SongList 라는 컴포넌트는 song 들을 쿼리하고 동시에 삭제할수있는 기능 이 필요하다
const mutation = gql` mutation deleteSong($id:String){ deleteSong(id:$id){ id title } } `; export default graphql(mutation)( graphql(query)(SongList));
다음과같이 이상한 형태로 뮤테이션,쿼리를 같이 할수있다.
'개발' 카테고리의 다른 글
mongoDB 셋업하기 (0) 2020.02.18 GraphQL Mutation 스키마 만들어 delete,edit 해보기 (0) 2020.02.12 graphql 데이터 api만들고 연동 , 타입관 관계형성하기 (0) 2020.02.11 graphql 시작하기 (0) 2020.01.28 react firebase 연동 auth 정보 db, app에 저장하기 (0) 2020.01.07