首页 > 解决方案 > 使用多个订阅好吗?

问题描述

我想知道为每个组件使用多个订阅是否是一种很好的策略。所以我很困惑选择以下哪种模式。我将 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>;
    }
}

标签: reactjsgraphql

解决方案


推荐阅读