약 6 ~ 8 시간 후에 나는 도움을 요청하고 있습니다. 내가 원하는 것은 graphql 서버와 응답 데이터를 내 반응 구성 요소에 props로 입력하는 것입니다 (ParameterBox.js 참조). 제가 뭘 잘못하고 있는지 알려주세요.반응 및 반응 - 아폴로를 사용하여 graphql 서버에서 데이터를 얻는 방법은 무엇입니까?
참조를 들어:하는 index.js FILE (가능성이 올바른) 참조를 들어
import React from 'react';
import ReactDOM from 'react-dom';
import {
ApolloClient,
createNetworkInterface,
ApolloProvider,
} from 'react-apollo';
import App from './App';
const networkInterface = createNetworkInterface({
uri: 'http://localhost:3001/graphql'
});
const client = new ApolloClient({
networkInterface: networkInterface
});
ReactDOM.render(
<ApolloProvider client={client}>
<App />
</ApolloProvider>,
document.getElementById('root')
);
는 :
//App.js
import React, { Component } from 'react';
import ParameterBox from './ParameterBox';
class App extends Component {
render(){
return(
<div>
<ParameterBox />
</div>
)
}
}
export default App;
PARAMETERBOX.JS (나는 그것이 올바른 생각) 파일을 APP.JS FILE (문제는 어딘가에 있습니다 ...)
//ParameterBox.js
import React, { Component } from 'react';
import axios from 'axios';
import { gql, graphql } from 'react-apollo';
import ParameterList from './ParameterList';
class ParameterBox extends Component {
constructor (props) {
super(props);
this.state = { data: [] };
this.loadParamsFromServer = this.loadParamsFromServer.bind(this);
}
//*** Old Method ***/
// I still set my data using the old methods of API urls. I want to switch to GraphQL
loadParamsFromServer(){
axios.get('http://localhost:3001/api/params')
.then (res => {
this.setState({ data: res.data });
})
}
//**** end old method ****/
componentDidMount() {
this.loadParamsFromServer();
}
render(){
return(
<div >
<h2> Parameters: </h2>
<p> HOW DO I GET IT HERE? {this.props.AllParamsQuery } </p>
<ParameterList
data={ this.state.data }/>
</div>
)
}
}
const AllParams = gql`
query AllParamsQuery {
params {
id,
param,
input
}
}`;
export default graphql(AllParams, {name: 'AllParamsQuery'})(ParameterBox);
감사합니다. 나는 그것을 국가로 정의하고 있었지만 국가는 아니었다. 그러나'this.props.data.params'가 작동하지 않았고,'this.props.AllParamsQuery.params'가 작동했습니다. 'AllParamsQuery' 대신'data'를 사용하지 않을 경우, 소품 데이터를 쿼리에 설정해야합니다. –
죄송합니다. 설정에 이름을 전달하지 못했습니다. 그 대답을 반영하도록 업데이트했습니다 :) –