使用React-native,setState update

时间:2016-08-10 12:10:30

标签: javascript react-native pusher

我试图在React-native应用程序中使用Pusher-JS实现函数,但是很难适当地更新此应用程序中变量的状态。

主要课程的一面,我定义了

var pusher = new Pusher('xxxxxxxsome number and code');

在主类组件中,我定义了一个函数

test() {
    var channel = pusher.subscribe('test_channel');
    console.log('ddddddd');
    channel.bind('my_event', function(data) {

    if (data != null) {
      if (data.message != null){
        console.log(data.message);
        this.setState({
          message_box: data.message
          });
      }
    }  
    }.bind(this));
  }

我把test()放在render()函数下面,如下所示。

render() {
    this.what();
    ...

当我将短信(从推送测试服务器)推送到' test_channel'(在移动应用中)时,该应用会冻结。当我在Chrome控制台中看到日志时,console.log(' dddddd')和console.log(data.message)会一直快速向下滚动(似乎test()重新渲染了很多次)。

我尝试在render()之外使用test(),但我不知道如何在主要组件之外单独放置和更新状态变量。

有没有办法可以在主要组件(这个)之外稳定此功能或setState?

请与我分享任何想法!

最佳

1 个答案:

答案 0 :(得分:1)

每次渲染时都会调用test函数吗?每当调用它时,Pusher#bind都会向其注册表添加一个新的回调。可能是每当有消息进来时,这个函数被多次调用,导致注册表中有更多的回调。

也许尝试绑定一个事件,可能在getInitialState