reactjs - 使用多个订阅好吗?
问题描述
我想知道为每个组件使用多个订阅是否是一种很好的策略。所以我很困惑选择以下哪种模式。我将 GraphQL 的订阅与 redis 的 Pub/Sub 一起使用。
如果您知道相关信息或帖子,请告诉我。谢谢阅读。:D
情况1
Subscription Set_item {
set_item {
name
no
}
}
class Items extends React.Component {
componentDidMount () {
apolloClient
.subscribe({ query:Set_item })
.subscribe({ data } => {
const item = this.props.items.find((item) => item.no === data.set_item.no);
if (data.set_item.name !== item.name)
this.props.set_item(data.set_item.no, { name:data.set_item.name });
});
}
render () {
return this.props.items.map((item) => <Item item={item} key={item.no}/>);
}
}
class Item extends React.Component {
render () {
return <div>{this.props.item.name}</div>;
}
}
案例2
Subscription Set_item ($no:Int) {
set_item (no:$no) {
name
}
}
class Items extends React.Component {
render () {
return this.props.items.map((item) => <Item item={item} key={item.no}/>);
}
}
class Item extends React.Component {
componentdidMount () {
apolloClient
.subscribe({ query:Set_item, variables:{ no:this.props.item.no} })
.subscribe({ data } => {
if (data.set_item.name !== this.props.item.name)
this.props.set_item(this.props.item.no, { name:data.set_item.name });
})
}
render () {
return <div>{this.props.item.name}</div>;
}
}
解决方案
推荐阅读
- node.js - how to host angular and node js project on the shared hosting (cpanel or plesk)?
- awesome-wm - 当 input_passthrough 为真时,awesome-wm wibox 对鼠标信号没有反应
- c++ - 无法使用 CMake 编译 MagickWand
- spring-data-jpa - SimpleJdbcCall 跳过第一个输入参数
- c - 将引号中的字符串传输到 C 中的 ascii2 字节数组
- sql - 是否有任何查询我们必须只写我们不想显示的列?SQL / Laravel
- python - 熊猫按年分组,日期产生虚假值
- r - Filter_at selected columns with multiple str_detect patterns
- javascript - 更新状态使数组呈现错误
- c++ - 我的重载运算符 < 不适用于 cpp 中的排序功能