2017-04-15 21 views
0

APIを呼び出す必要があるモーダルコンポーネントがあります。これはisOpenがモーダルを開いて閉じるためのフラグですが、この方法では無限呼び出し。反応モーダルのAPIを呼び出すと無限ループになります

+0

小道具に変更があるたび 'componentWillReceiveProps'が呼び出されますが。レンダリング/要求している間、すべての時間を要求しないようにフラグを使用これは、内部状態や自分のアプリ状態に反応することができます。あなたの 'ajax'を' componentDidMount'に書き出し、 'isOpen'が真になるまであなたの' modal'を描画しないでください。 – Panther

+0

私のモーダルコンストラクタでconsole.logを実行します。それを含むコンペアのページをロードすると起動します。レンダリングしないとどういう意味ですか? –

+0

'componentWillReceiveProps'は' n'回呼び出されます。親コンポーネントのrenderメソッドでは、 '{this.state.isOpen? ():null} ' – Panther

答えて

0

ちょうどあなたが

componentWillReceiveProps(nextProps) { 
    if(nextProps.isOpen && !this.requesting){ 
     const { selectedItemId } = this.props; 
     this.requesting = true; 
     //ajax 
     ajax.then(() => { 
      this.requesting = false; 
     }) 

    } 
} 
+0

これは変ですが、私はパンサーが言ったことはより意味をなさないと思います。 –

+0

それはあなたがそれをどのように動作させたいのか、どのように必要なのかによって異なります。たとえば、モーダルが開いている間にリクエストを行う必要がある場合(モーダル内の何かをクリックしてリクエストを行う必要があるとします)。あなたの質問は、ユースケースではっきりしていないので、私はあなたの現在の実装のために書いています。 –

関連する問題