使用多个订阅可以吗?

时间:2019-03-07 18:40:40

标签: reactjs graphql

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

0 个答案:

没有答案