首页 > 解决方案 > 为更新突变解构对象

问题描述

我还是 Reactjs 和 Graphql 的新手。我一直在尝试将特定对象传递给变量对象以进行更新操作。我希望能够将对象分离为ID其他值,因为它位于其他功能使用的组件内部,因此使用相同的组件也可以轻松地对其他人进行突变。

当我从这段代码中单击我的编辑选项卡时,我检索了这个特定的对象:

 const handleUpdate = () => {
    const updateDetails = {}
    Object.keys(formDetails).forEach(k => {
      updateDetails[k] = formDetails[k]?.id ? formDetails[k]?.value : formDetails[k]
    })
    console.log('updated data is ', updateDetails)
    onUpdate(updateDetails)
  }

当我console.log返回结果时,上面的代码如下:

updated data is  {__typename: "NewsType", id: "c67ea940-298f-4d27-8661-57630f8812a5", name: "Gary"}

我的onUpdate函数在另一个文件中定义为 prop,如下所示:

const onUpdate = async (items) => {
    console.log('values to insert is ', items)
    try {
      const { data } = await update({ variables: { [inputKey]: items, [inputID]: items.id } })
      if (Object.values(data)[0].ok) {
         handleModal()
      }
    } catch (error) {
      console.log(error)
    }
  }

根据我们正在使用的功能,其中[inputKey]和作为道具传递,但在这种情况下,值分别是和。[inputID]newsid

我的更新突变如下:

const [update] = useMutation(updateOperation)

其中 myupdateOperation也作为道具传入,以使其更通用,以供其他功能使用。

我传递给我updateOperation的 grapqhql 查询如下所示:

export const UPDATE_NEWS = gql`
  mutation updateNews($news: NewsUpdateGenericType!, $id: ID!){
    updateNews(news: $news, id: $id) {
     ok
    }  
  } `

我尝试了很多概念,比如使用

Object.keys(values).foreach((id, value) => {
....})

Object.entries(values)

我真的很难让这个更新功能发挥作用......任何关于出路的想法都将受到高度赞赏

标签: reactjsgraphql

解决方案


我已经能够将我的对象分成 ID 和其他值。

我使用了这个概念

const {id, ...otherValues} = items

这对我有用......感谢@Ziwon的努力


推荐阅读