AWS AppSync中的多个订阅

时间:2019-12-03 20:40:09

标签: javascript reactjs aws-amplify

类似于3月的eugenekr(question here),我在为Todo列表设置多个订阅时遇到麻烦。我有一个创建订阅和一个删除订阅,当分别应用时,它们都可以工作,这令人鼓舞。

如果我遵循mnishiguchi的建议并编写了多个<Connect />组件,我仍然无法使它正常工作。据我所知,订阅<Connect>实际上没有收到prev中的任何内容来进行操作。记录仍会添加或从列表中删除。

此代码有效(添加新的Todo时列表会更新);

render() {
    return (
      <Segment>
        <Connect
          query={graphqlOperation(ListTodos)}
          subscription={graphqlOperation(SubscribeToNewTodos)}
          onSubscriptionMsg={this.onNewTodo}
        >
          {({ data, loading, errors }) => {
            if (loading) {
              return <div>Loading...</div>;
            }
            if (errors.length > 0) {
              return <div>{JSON.stringify(errors)}</div>;
            }
            if (!data.listTodos) return;

            return <TodosList todos={data.listTodos.items} />;
          }}
        </Connect>
      </Segment>
    );
  }

但是如果我什么都没得到的话,

render() {
    return (
      <Segment>
        <Connect query={graphqlOperation(ListTodos)}>
          {({ data, loading, errors }) => {
            if (loading) {
              return <div>Loading...</div>;
            }
            if (errors.length > 0) {
              return <div>{JSON.stringify(errors)}</div>;
            }
            if (!data.listTodos) return;

            return <TodosList todos={data.listTodos.items} />;
          }}
        </Connect>

        <Connect subscription={graphqlOperation(SubscribeToNewTodos)} onSubscriptionMsg={this.onNewTodo}>
          {() => {}}
        </Connect>

        <Connect subscription={graphqlOperation(SubscribeToDeleteTodos)} onSubscriptionMsg={this.onDeleteTodo}>
          {() => {}}
        </Connect>
      </Segment>
    );
  }

建议,谢谢。

0 个答案:

没有答案