Когда вызывается мой обработчик, я получаю сообщение об ошибке, что мутация не является функцией. По какой-то причине моя мутация и запрос не привязаны к моему компоненту, когда я смотрю на this.props
.
ОШИБКА:
RelationshipDropDown.js:58 Uncaught TypeError: this.props.deleteSystemDatasets is not a function
at RelationshipDropDown.deleteHandler (RelationshipDropDown.js:58)
at onClick (RelationshipDropDown.js:92) ...
Я пробовал несколько стилей синтаксиса, пытаясь передать мутацию и запрос компоненту, и использовал стиль в других компонентах без ошибок. Может кто-нибудь объяснить, почему их не пропустили? Не уверен, что мне не хватает.
import React from 'react';
import ReactDOM from 'react-dom';
//Import GraphQL
import gql from 'graphql-tag';
import { graphql, compose } from 'react-apollo';
export class RelationshipDropDown extends React.Component{
constructor(props){
super(props);
this.state = {key:null, system:null};
};
deleteHandler() {
if (this.state.key) {
console.log(this.state.key, this.state.system)
console.log(this.props)
this.props.deleteSystemDatasets({
variables:{key: this.state.key, datasets: [this.state.system]},
refetchQueries: [{ query: this.props.getSystemDatasets , variables: {system:this.state.system} }]
});
console.log("Dataset " + this.state.key + "Deleted From " + this.state.system);
}
};
handleChange(e){
let obj = JSON.parse(e.target.value)
console.log(e.target.value)
console.log(this.props)
this.setState({key: obj.key, system: obj.system});
};
render(){
return (
<div id="relationship-select">
<select onChange={(e) => this.handleChange(e)} className="select-menu" type="select">
{this.props.dataArray}
</select>
<br/>
<button onClick={() => this.deleteHandler()}>delete</button>
<button>edit</button>
</div>
)
}
}
export const GET_SYSTEM_DATASETS = gql`
query getSystemDatasets($system: String!){
System(name:$system){
datasets{
name
}
}
}
`;
export const DELETE_SYSTEM_DATASET_RELATIONSHIP = gql`
mutation deleteSystemDatasets($systemKey: ID!, $datasetKeys: [ID!]!){
deleteSystemDatasets(key:$systemKey, datasets: $datasetKeys)
}
`;
const deleteSystemDatasets = graphql(DELETE_SYSTEM_DATASET_RELATIONSHIP, {name: "deleteSystemDatasets"});
const getSystemDatasets = graphql(GET_SYSTEM_DATASETS, {name: "getSystemDatasets"});
export default compose(deleteSystemDatasets, getSystemDatasets)(RelationshipDropDown);