我试图在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?
请与我分享任何想法!
最佳
答案 0 :(得分:1)
每次渲染时都会调用test
函数吗?每当调用它时,Pusher#bind都会向其注册表添加一个新的回调。可能是每当有消息进来时,这个函数被多次调用,导致注册表中有更多的回调。
也许尝试绑定一个事件,可能在getInitialState
?