web-dev-qa-db-ja.com

React-Native this.setState()が機能していません

React-nativeのthis.setState();を機能させることができません。

onUpdateメソッドを実行すると、正しいJSONオブジェクトが返されることがわかります。

問題は、setState関数が呼び出されても何も起こらず、メソッドが失敗することです。その下でコードが実行されることはありません。また、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>
    );
  }
});
5
TimDOES

LoginコンポーネントのonUpdateメソッドは、おそらくシリアル化できないオブジェクトで呼び出されます。たとえば、関数や循環参照を含めることができます。

OnUpdateメソッドで、val引数から関心のあるものを選択し、それを状態に挿入する必要があります。このようなもの:

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

または、onUpdateに送信されるオブジェクトに含まれているものは何でも。

8
Sten