如何访问 Apollo useMutaion 响应

问题描述

当我使用 useMutation 钩子进行突变时,我可以控制台记录我的数据,但我无法将数据对象保存在 localState 中。我不知道我错过了什么。任何帮助表示赞赏。

我的代码如下:

//Schema file

startTest(identifier: String): TestResponse

变异载荷如下:

  type TestResponse {
    errorCode: Int
    errorMessage: String
    success: Boolean
    transactionId: ID
    version: Int
  }

在解析器中,我硬编码了以下数据返回:

    startTest(_,{ identifier }) {
      console.log("hello from server");
      return {
        errorCode: 0,errorMessage: null,success: true,transactionId: "d2984911-bbc4-4e6a-9103-96ca934f6ed3",version: 0,};
    },

在组件文件夹中,我通过单击按钮触发了突变。

const [startTestt,{ loading,error,data }] = useMutation(
    START_FIRE_damPER_TEST,{
      onCompleted: ({ startFiredampersTest }) =>
        console.log(startFiredampersTest.success),useState(startFiredampersTest.success)
       
    },{
      onError: () => console.log("error!"),// never gets called
    }
  );

  console.log(result); // undefined

  if (loading) return <p>Loading...</p>;
  if (error) return <p>Error!</p>;

  if (data && data.startFiredampersTest)
    return (
      <div>
        <p>Success!</p>
        <pre>{JSON.stringify(data,null,2)}</pre> // I can see string object but how to render the element of the object inside the component??
      </div>
    );


  const triggerTest = () => {
    startTest({ variables: { identifier: "0000000" } });
  };

  return (
    <>
      <Banner />
       <button onClick={triggerTest}>Click to Delete Buck</button>

    </>
  );

我需要访问从突变返回的返回数据以供以后使用。测试响应/有效负载与要更新的任何其他查询或类型无关。它只包含测试的状态和我需要在本地状态中保存或在组件中呈现它的其他关键值。

解决方法

您的 CREATE OR REPLACE PROCEDURE zzz () DYNAMIC RESULT SETS 1 P1: BEGIN Declare cID char(5) ; Declare cc char(5) ; Declare csql varchar(200) ; Declare s1 varchar(200) ; Set cID = 'a' ; SET Csql = 'SET ? = (select a from aaa where a = :cID)' ; PREPARE S1 FROM Csql ; EXECUTE S1 into cc using cID ; {error this line} print (cc) ; END P1 中已经有一个 useState,您只需要正确编写即可。假设 stores.stores = storeInit.map((data) => Store.fromJson(data)).toList(); 是对 React 的 onCompleted 钩子的调用,那么您可能只需要将状态的初始化移动到您的组件中。

useState