2016-10-13 16 views
0

を反応させている状態へのアクセス:私は機能を持っている

getCommits: function() { 
    fetch('/commits').then((response) => { 
     if (response.status >= 400) { 
      throw new Error("Bad response from server"); 
     } 
     return response.json(); 
    }) 
    .then((commits) => { 
     this.setState({commits: commits}); 
    }); 
    }, 

が、私はこの機能の状態を設定し、今私は他の機能は、この状態にアクセスしたいです。これどうやってするの?

this.state.commits私が持っていたアイデアの1つでした。

 getTodaysCommits: function(){ 
    fetch('/commits').then((response) => { 
     if (response.status >= 400) { 
      throw new Error("Bad response from server"); 
     } 
     return response.json(); 
    }) 
    .then((commits) => { 
     var todaysCommits = []; 
     for (var i = 0; i < commits.length; i++) { 
     var today = new Date().toDateString(); 
     var stringToDate = new Date(commits[i].commit.author.date).toDateString(); 
     if (today == stringToDate){ 
      todaysCommits.push(commits[i]) 
     } 
     } 
     return todaysCommits; 
    }) 
    .then((todaysCommits) => { 
     this.setState({commits: todaysCommits}); 
    }) 
    }, 

この関数では、APIからフェッチせずに前の関数で設定した状態を使用することなくコミットを使用する方法はありますか?

componentDidMount: function() { 
    this.getCommits();} 

私はあなたの状態が設定され、その後、あなたがthis.state.commitsとして、コンテキストの状態を参照することによってそれにアクセスできることを確認する必要がありcomponentDidMount

答えて

1

最初に設定されます私の機能を持っています。

正しいコンテキストを参照していることを確認する必要があります。

はそれはしかし第二の機能に住んでいるでしょう

getTodaysCommits: function(){ 

    var commits = this.state.commits; 
    console.log(commits); 

} 
+0

としての機能でそれを使用しますか?それでどうすれば '.then'と呼べるのですか? –

+0

この状態変数を使用するだけで再度フェッチする必要はありません。 –

+0

ok yehは意味があります。最後の1つの質問です。私は私の 'getTodaysCommits()'の全体を表示するように更新しました。私はすべてのフェッチ部分を取り除き、 'var commits = this.state.commits; 'で置き換えたいと思いますが、それは私の' .then'約束を呼び出すことができないということですか? –

関連する問題