1

私はアクティビティのあるアプリを持っています。アプリは最初にインターネット接続を確認します。インターネットに接続していない場合は、ページを更新するボタンが表示された画面が表示されます。問題は、私のAPIコール(Axios)がcomponentDidMount()にあり、最初のレンダリングの後に一度だけ呼び出されることです。もう一度componentDidMountを呼び出すようにページをリロードする方法はありますか?ネイティブリロードに反応する

平均的なリフレッシュのようです。私はEXPO btwを使用しています。どんな助けもありがとうございます。申し訳ありませんが、例はありません、私は可能であれば考えを得たかった

答えて

-1

コンポーネントのsetState関数を呼び出すことによって、それをリフレッシュすることができます。 SETSTATEは関係なく、あなたがそれに渡すオブジェクトを何あなたのコンポーネントを更新しません呼び出す

<Button onPress={() => this.setState({dummy: 1})} /> 

:ページを更新するために起こっているのボタンがあります場合、私はこれを行うだろう。私はページを再レンダリングするかどうか分かりませんが、componentDidMount関数を呼び出すので、API呼び出しをfuncに移動し、componentDidMountでこの関数を呼び出す必要があります。例:

componentDidMount() { 
    apiCalls() 
} 

apiCalls() { 
    .... // your code 
    this.setState({dummy: 1}) 
} 

render() { 
    <View> 
    ... 
    <Button onPress={this.apiCalls.bind(this)} /> 
    ... 

    </View> 
} 
1

コンポーネントを強制的に更新できます。 これを確認してください: https://reactjs.org/docs/react-component.html#forceupdate

コンポーネントを再レンダリングします。

チェックこの例:

class App extends Component{ 
    constructor(){ 
    super(); 
     this.forceUpdateHandler = this.forceUpdateHandler.bind(this); 
    }; 

    forceUpdateHandler(){ 
    this.forceUpdate(); 
    }; 

    render(){ 
    return(
     <div> 
      <button onClick= {this.forceUpdateHandler} >FORCE UPDATE</button> 
      <h4>Random Number : { Math.random() }</h4> 
      </div> 
    ); 
    } 
} 

ReactDOM.render(<App />, document.getElementById('app')); 
+0

このリンクは質問に答えるかもしれませんここでは答えの本質的な部分を含めて参照のためのリンクを提供する方がよいでしょう。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](/レビュー/低品質の投稿/ 18140616) – Zabuza

0

私はあなたのコンポーネント内で独自の機能であなたのAPI呼び出しを入れてお勧めします。あなたがcomponentDidMountとボタンクリックでAPI呼び出しを行いたい場合は、makeApiCall()関数を作成し、componentDidMountから呼び出すと、あなたのonPressプロップを適切に設定するだけです。onPress={this.makeApiCall}

関連する問題