javascript - 中继现代突变,RANGE_ADD/Append

标签 javascript relayjs relaymodern

我有一个集合和一个突变,可以向其中添加新项目。成功突变后,我无法让 Relay Modern 更新 UI。

我有一个带有以下查询:属性的PaginationContainer设置

  {
    query: graphql`
      fragment ContactsList_query on WPQuery {
          id
          contacts: posts(
              first: $count,
              after: $cursor
              post_type: $postType,
              order: $order,
              category_name: $categoryName
          ) @connection(key: "ContactsList_contacts" ) {
            edges {
              node {
                id
                ...ContactListItem_contact
              }
            }
            pageInfo {
              hasNextPage
              endCursor
            }
          }
      }
  `
  },

正确获取。然后我有一个突变可以将联系人添加到此列表中。 配置 RANGE_ADDupdater: 回调技术根本不起作用。

我像这样触发这个突变

 onSave = (fields) => {
    insertPost(
      fields.toJS(),
      this.props.query.id,
      this.props.relay.environment
    );
  }

没有错误,只是没有更新。

const mutation = graphql`
  mutation InsertPostMutation(
    $data: InsertPostInput!
  ) {
    insert_post(input: $data) {
      wp_query {
        id
      }
      postEdge {
        node {
          id
          title
        }
      }
    }
  }
`;

export default function insertPost(data, id, environment) {
  const variables = {
    data,
  };

  commitMutation(
    environment,
    {
      mutation,
      variables,
      onCompleted: (response, errors) => {
        console.log('Response received from server.')
      },
      onError: err => console.error(err),
      configs: [{
        type: 'RANGE_ADD',
        parentID: id,
        connectionInfo: [{
          key: 'ContactsList_contacts',
          rangeBehavior: 'append',
        }],
        edgeName: 'postEdge'
      }],
      // updater: (store) => {
      //   // const inspector = new RecordSourceInspector(store)
      //   const payload = store.getRootField('insert_post')
      //   const newEdge = payload.getLinkedRecord('postEdge')
      //   const proxy = store.get(id)
      //   // Conn is always undefined here
      //   const conn = ConnectionHandler.getConnection(proxy, 'ContactsList_contacts')
      //   ConnectionHandler.insertEdgeAfter(conn, newEdge)
      // }
    },
  );
}

最佳答案

好吧,我可以通过更改线路来解决这个问题

@connection(key: "ContactsList_contacts")

@connection(key: "ContactsList_contacts", 过滤器: [])

似乎无法找到连接,否则...

https://facebook.github.io/relay/docs/pagination-container.html#connection-directive

然后使用updater函数找到连接。

关于javascript - 中继现代突变,RANGE_ADD/Append,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46230666/

相关文章:

javascript - 如何让Electron与sqlite3一起工作?

javascript - 嵌套的 React/Relay 组件没有收到 Prop

javascript - 在对象数组中查找对象返回 null

javascript - 如何将过滤器参数传递给中继负载更多

javascript - 在 webpack 的 js 文件中导入 moment.js

javascript - 一次从不可变列表中删除多个项目

javascript - 在模糊之前选择先前聚焦的输入

reactjs - 继电器现代: Connecting websocket to network layer

react-native - 中继现代 : how to mock relay for unit testing

reactjs - 我怎样才能拥有同一个顶级片段容器的多个兄弟实例?