类似于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>
);
}
建议,谢谢。