问题描述
const Mutation = {
readMessage: (_,{ input: { roomId,userId } }) => {
console.log('READ MESSAGE')
const room = RoomAPI.updateReadMessageId(userId,roomId)
pubsub.publish(MESSAGE_READ,{ messageRead: room,roomId })
return true
},}
const Subscription = {
messageRead: {
subscribe: withFilter(
() => {
console.log('WITH FILTER')
return pubsub.asyncIterator([MESSAGE_READ])
},(payload,{ input: { roomId } }) => {
console.log(payload)
return payload.roomId === roomId
},),},}
当readMessage
突变到达服务器时,我猜控制台日志的正确顺序是:
- 阅读消息
- 带过滤器
- console.log(payload)
然而,这个顺序被混淆如下:
- 带过滤器
- 阅读消息
- console.log(payload)
有时
- 阅读消息
- console.log(payload)
- 带过滤器
甚至
- 阅读消息
- 带过滤器 (没有 console.log(payload))
导致 apollo client
什么也没有收到。
我不确定这种关系是什么,但这种行为是在我添加 react-transition-group
后开始的。
const generateRoutes = () =>
routes.map(route => <Route key={route.path} path={route.path} exact component={route.component} />)
return (
<TransitionGroup className={slideDirection}>
<Csstransition key={location.key} classNames="slide" timeout={500}>
<div className="slide-container">
<Switch location={location}>{generateRoutes()}</Switch>
</div>
</Csstransition>
</TransitionGroup>
)
有人知道为什么会这样吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)