2015-04-06 84 views
3

我無法獲得react-native的this.setState();的工作。當我運行onUpdate方法時,我可以看到返回正確的json對象。問題是setState函數被調用時什麼也沒有發生,並且方法失敗。沒有更多的代碼在它下面執行。它也不是在setState函數之後重新渲染組件。react-native this.setState()不工作

這是我下面的組件代碼:

var App = React.createClass({ 

    getInitialState: function() { 
    return { 
     view: Login, 
     menu: false, 
    } 
    }, 

    componentDidMount: function() { 
    var self = this; 
    }, 

    onUpdate: function(val){ 
    // val is verified as an object here when I log to console 
    this.setState(val); 
    // nothing runs here. The above line errors out the function 
    }, 

    render: function() { 
    if(this.state.view == 'Home'){ 
     this.refs.sideMenu.frontView = Home; 
     return (
     <View style={styles.container} > 
      {sideMenu} 
     </View> 
    ); 
    } 
    return (
     <View style={styles.container} > 
     <Login onUpdate={this.onUpdate} /> 
     </View> 
    ); 
    } 

}); 
+0

我想我們還需要看看'登錄'做什麼。你聲稱'val'是一個對象,但是如果它不起作用,就會發生一些腥味...... :) – zvona 2015-04-06 09:54:02

+0

這也有助於瞭解你在調用'setState'時發生了什麼錯誤。 – Brennan 2015-04-08 01:44:56

回答

4

您登錄組件的onUpdate方法可能調用不能被序列化的對象。例如,它可能包含函數,或者可能是循環引用。

在你的onUpdate方法中,你應該從val參數中選擇你感興趣的東西,並將其插入狀態。這樣的事情:

this.setState({ 
userName: val.userName, 
userId: val.userId 
}); 

或任何包含在發送到onUpdate的對象。