2016-11-15 44 views
0

这是一个列表,其中项目可以重新排序,其中突变输入是重新排序的数组,并且突变结果是保存到数据库后的新顺序中的照片列表。实际的突变效果很好,但我不知道数组应该是什么样子,因为它似乎不会发生。对于数组结果,optimisticResponse看起来像什么?


input InputItemOrder { 
    key: String 
    order: Int 
    ref: InputPhoto 
} 

input InputPhoto { 
    public_id: String 
    secure_url: String 
} 

type Mutation { 
    orderMyPhotos(itemOrder: [InputItemOrder]): [Photo] 
} 

type Photo { 
    public_id: String 
    secure_url: String 
    order: Int 
} 

const ORDER_MY_PHOTOS_MUTATION = gql` 
mutation OrderMyPhotos($itemOrder: [InputItemOrder]) { 
    orderMyPhotos(itemOrder: $itemOrder) { 
    public_id 
    secure_url 
    order 
    } 
} 
`; 

graphql(ORDER_MY_PHOTOS_MUTATION, { 
    props: ({ ownProps, mutate }) => ({ 
     order: (itemOrder) => mutate({ 
     variables: { itemOrder }, 
     optimisticResponse: { 
      __typename: 'Mutation', 
      orderMyPhotos: itemOrder.map(i => ({ 
      __typename: 'Photo', 
      public_id: i.ref.public_id, 
      secure_url: i.ref.secure_url, 
      order: i.order, 
      })), 
     }, 
     updateQueries: { 
      MyPhotos: (prev, { mutationResult }) => { 
      const orderedPhotos = mutationResult.data.orderMyPhotos; 
      return update(prev, { 
       userPhotos: { 
       $set: orderedPhotos, 
       }, 
      }); 
      }, 
     }, 
     }), 
    }), 
    }), 
+0

乐观的更新应该看起来就像真正的结果。所以你说真正的突变结果工作正常,但不是乐观的版本? – stubailo

回答

0

感谢@stubailo:

乐观的更新应该酷似真正的结果。

事实证明我在服务器上做了额外的逻辑,我没有应用到乐观更新。当我做,它的工作:

graphql(ORDER_MY_PHOTOS_MUTATION, { 
    props: ({ ownProps, mutate }) => ({ 
     order: (itemOrder) => mutate({ 
     variables: { itemOrder }, 
      optimisticResponse: { 
      __typename: 'Mutation', 
      orderMyPhotos: _.sortBy(itemOrder.filter(i => _.isNumber(i.order)).map(j => ({ 
       __typename: 'Photo', 
       order: j.order, 
       public_id: j.ref.public_id, 
       secure_url: j.ref.secure_url, 
      })), 'order') 
      }, 
     updateQueries: { 
      MyPhotos: (prev, { mutationResult }) => { 
      return update(prev, { 
       userPhotos: { 
       $set: mutationResult.data.orderMyPhotos, 
       }, 
      }); 
      }, 
     }, 
     }), 
    }), 
    }), 
相关问题