Reactjs 断开与listenTo方法的连接

Reactjs 断开与listenTo方法的连接,reactjs,refluxjs,Reactjs,Refluxjs,所以,我有两家商店。第一个pageStore提供特定页面的业务逻辑,第二个globalStore提供Android/iOS全局事件的逻辑。 当用户进入特定页面时,React.componentDidMount调用 pageEntered: function () { this.listenTo(globalStore, this.locationUpdated); }, 因此,我的pageStore从此开始监听全球存储的GPS更新。但是有没有办法在React.componentWill

所以,我有两家商店。第一个pageStore提供特定页面的业务逻辑,第二个globalStore提供Android/iOS全局事件的逻辑。 当用户进入特定页面时,React.componentDidMount调用

pageEntered: function () {
    this.listenTo(globalStore, this.locationUpdated);
},

因此,我的pageStore从此开始监听全球存储的GPS更新。但是有没有办法在React.componentWillUnmount上断开listenTo的连接?

下面是一个如何从商店取消订阅的示例(摘自官方示例):


下面是一种思考上述示例中发生的情况的方法:

var myFunc = function(){
    console.log("This gets fired immediately");
    var randomNumber = Math.ceil(Math.random()*10);
    return function() {
        return randomNumber;
    }
}

var a = myFunc(); //Console log fires IMMEDIATELY, a is the returned function

a(); //some integer from 1 to 10
由于myFunc是在我们将其分配给变量时调用的,因此console.log会立即激发——就像这样。unsubscribe=statusStore.listen(this.onStatusChange);一旦componentDidMount发生,它会立即“打开”侦听器

在componentDidMount生命周期方法中,我们使用将侦听器附加到。那是被调用的。为了方便起见,我们将函数的结果分配给此。取消订阅

如果您看一下本文()的第60-68行,请考虑.listen返回一个删除事件侦听器的函数

在componentWillUnmount中,我们调用this.unsubscribe删除侦听器。您可以将.listen视为返回一个删除“侦听器”的函数,当组件将卸载生命周期发生时,我们调用该函数并终止侦听器

Tl;想象一下,listen附加了一个监听器并返回一个关闭监听器的函数——当你第一次调用它时,监听器打开,当你调用返回的函数时,它关闭监听器

var myFunc = function(){
    console.log("This gets fired immediately");
    var randomNumber = Math.ceil(Math.random()*10);
    return function() {
        return randomNumber;
    }
}

var a = myFunc(); //Console log fires IMMEDIATELY, a is the returned function

a(); //some integer from 1 to 10