2016-04-05 25 views
0

kullanarak nasıl ele alacağımı nasıl kullanacağım /roles/:id gibi bir şeyle eşleşen ve sağdaki bölüme (aşağıya bakın) bir yol gösteren bir Rotam var. @connect kullanıyorum, bazı sahne ve eylemlerimi bileşenime aktarıyorum ve bu eylemlerden biri, componentWillMount kancasında id yol param alanına dayalı bazı verileri getiriyor.yol param değişikliklerini @connect

Sorun şu ki, bir kullanıcı sağ listeden farklı bir örneği tıklattığında, bu nedenle rotayı değiştirirken (ancak bileşeni değil/bileşeni takarken!) Emin olmak için temiz bir yol düşünemiyorum. eylem tekrar kovuldu.

Layout

ben componentWillReceiveProps içine çengel düşündük, ama belli ki o sonsuz render döngü yaratacaktır. Burada bir şey mi eksik?

+0

konteyner bileşenlerden için ilk çözüm kullanımını decorator-pattern prepfer sonsuz bir döngü? Sadece rota paramının değiştiğini kontrol etmelisiniz: 'if (this.props.routeParam! == nextProps.routeParam) fetchData (nextProps.routeParam)' – VonD

+0

@vonD, ilk render üzerinde ilk render üzerinde – Zen

+0

olmasına rağmen ilk satır üzerine düşüyor "componentWillMount" işlevini zaten – VonD

cevap

1

o veriyi almak için

1- kullanımı dekoratör deseni yapmak için 2 yöntem, loading=true olmalıdır Bu

export function fetchFoo(id) { 
return dispatch => { 
    dispatch({type:'LOADING'}); 
    fetch(`/book/${id}`, (response) => { 
    if(response.status == 200){ 
     dispatch({type:'SUCCESS'}); 
    }else { 
     dispatch({type:'FAIL'}); 
    } 
    }) 
} 
} 

ilk durumuna gibi redux-async-connect

2- kullanımı redux-thunk, isLoaded=true

vardır

LOADING redüktördedeğerini ayarlamalısınız sizin devlet içindeve sahip olmayacak bu şekilde tetik fetchFoo eylem önce loading bayrağı kontrol sonsuz istekleri

componentWillReceiveProps:(nextProps){ 
    if(!nextProps.loading && !nextProps.isLoaded){ 
    fetchFoo(params); 
    } 
} 

i Neden componentWillReceiveProps` oluşturmak `içine çengel olur

+0

yapabildiğiniz şekilde kullanabilmekteyim. Buna rağmen, bu şekilde bileşenle veriyi doğrudan almak istemiyorum (ve böylece global durum atomunun "adlandırılmış" verisine farklı bir yerde saklamak gibi), sorunu çözüyor . Teşekkürler! – Zen