RelayNetworkLayer

必须符合 RelayNetworkLayer 接口的自定义网络层。

概述 #

方法

方法 #

sendMutation #

sendMutation(mutationRequest: RelayMutationRequest): ?Promise

实现这个方法将 mutation 发送到服务器。当获得服务器响应时,此方法必须使用 mutationRequest.resolve 响应数据或使用Error 对象调用 mutationRequest.reject

这个方法可选地回传一个 promise 来帮助适当的发现错误。

示例 #

sendMutation(mutationRequest) {
  return fetch(...).then(result => {
    if (result.errors) {
      mutationRequest.reject(new Error(...))
    } else {
      mutationRequest.resolve({response: result.data});
    }
  });
}

有关对象可用的方法,参阅 RelayMutationRequest

sendQueries #

sendQueries(queryRequests: Array<RelayQueryRequest>): ?Promise

实现此方法将查询发送到服务器。对于每个查询请求,当接收到服务器响应时,此方法必须使用 resolve with the 响应数据, 或使用 Error 对象 reject

该方法接收一组查询(而不是单个查询),以便于批量查询以提高网络效率。

这个方法可选地回传一个 promise 来帮助适当的发现错误。

示例 #

sendQueries(queryRequests) {
  return Promise.all(queryRequests.map(
    queryRequest => fetch(...).then(result => {
      if (result.errors) {
        queryRequest.reject(new Error(...));
      } else {
        queryRequest.resolve({response: result.data});
      }
    })
  ));
}

有关对象可用的方法,参阅 RelayQueryRequest

支持 #

supports(...options: Array<string>): boolean

当该网络层支持提供的选项时,实现此方法返回true。这用于声明网络层支持的功能。

在未来,Relay的高级功能可能取决于网络层能够支持哪些功能。

示例 #

supports(...options) {
  return options.every(option => {
    if (option === 'future-feature') {
      return true;
    }
    return false;
  });
}