ユーザーがボタンをクリックすると、asset_type;
の値をgraphqlに渡す必要があります。現在、私はこのエラーを取得していますので、それを行うための適切な方法は何ですか:ボタンでonClickしたときにメソッドからgraphqlに変数を渡して戻りデータを返す方法はありますか?
GraphQL error: Illegal value for Message.Field .am.AssetRequest.asset_type of type string: object (proto3 field without field presence cannot be null)
は、これは私が私のコードで持っているものです。
import gql from 'graphql-tag';
import { graphql } from 'react-apollo';
constructor(props) {
super(props);
this.state = {
value: '',
};
this.handleChange = this.handleChange.bind(this);
}
handleChange(event) {
this.setState({ value: event.target.value });
}
submit() {
this.state.value
this.props.haha(this.state.value) //this is where I'm stuck. I'm not sure how to send it to graphql props.
}
render() {
<div>
<Input value={this.state.value} onChange={this.handleChange} />
<button onClick={() => { this.submit(); }} >
<span>Run Query</span>
</button>
</div>
// other html element
}
const queryVariable = gql`
query RootQuery($asset_type: String) {
am {
assets(asset_type: $asset_type) {
data {
uuid
label
asset_type
description
}
}
}
}
`;
export default graphql(queryVariable, {
props: ({ query }) => ({
haha: (asset_type) => query({
variables: { asset_type },
})
})
})(PlacementSearch)
私もgraphiqlを使用してデータを取得することができます。
返信データを返信することはできません。助けてよろしくお願いします。
質問が不明な場合は申し訳ありません。私は実際にグラフのクエリに値をハードコードした場合、クエリの結果を得ることができます。私がしなかったのは、ユーザーがボタンをクリックしたときにメソッドから変数を送信することです。変数がハードコーディングされていないことを意味します。私は上記の質問を改訂し、うまくいけば、これで私を助けることができます。私はすでにドキュメントを見て、ボタンとメソッドの部分で混乱しています。上記の私の例から、私はメソッドでユーザ入力変数を得ることができますが、それをgraphqlにどのように送るのですか?前もって感謝します。 – sg552
上記の編集をご覧ください。最初のデータを取得するために、何らかの種類のデフォルト値がクエリにハードコードされている必要がありますが、refetchを呼び出すことによって変更できます。ユーザーが値を入力してボタンを押すまで、データを空にしたい場合は、 'asset_type'の初期値を空文字列に設定するだけです。 –
詳細な説明ありがとうございます。本当に役に立ちます。 – sg552