2017-04-19 5 views
1

ändert Ich habe die folgende Struktur:Mein Link-Tag aus reagieren-Router nicht meine Seite

<CategoryRecipesList> 
    <Title> Recipes for {this.props.category} </Title> 
    <Mesh> You can also click on : {categoryList.map(el => <Link to={'categories/' + el}>{el}</Link>} </Mesh> 

    <Grid> 
    recipes.map((s, i) => <Card {...s}/>) 
    </Grid> 
</CategoryRecipesList> 

ich eine Konstruktor-Funktion auf der Category Komponente habe, die recipes Liste nach einem category param abruft.

Wenn ich auf den <Link/> Tag, den Titel und die URL-Update, aber nicht die <Card> s im Raster klicken.

Hat jemand eine Ahnung?

Antwort

0

Ich fand die Lösung. Ich musste berücksichtigen, dass die Karten im Raster von den Requisiten in der Elternkomponente abhängen(). Also, wenn ich die URL von einem Klick auf die <Mesh/> ändern, muss ich ComponentWillReceiveProps(newProps) Methode verwenden, vergleichen, wenn this.props.category hat sich durch den Vergleich geändert (this.props.category und newProps.category). Wenn ja, muss ich die neuen Karten holen, um genau angezeigt zu werden. Funktioniert jetzt gut.

Im <CategoryRecipesList> Komponente:

componentWillReceiveProps(nextProps) { 
    if (this.props.params.category_type !== nextProps.params.category_type) { 
     this.category = nextProps.params.category_type 
     this.props.fetchRecipesByDevice(this.category) 
    } 
    } 
0

Sie suchen wahrscheinlich Update Blocking. Versuchen Sie, die Kartenkomponente mit withRouter zu umhüllen.

export default withRouter(Card) 
+0

Dank. Ich habe meine Frage bearbeitet, um meinen Kampf deutlicher zu erklären. –

+0

@StanAmsellem Ich habe meine Antwort aktualisiert. Versuchen Sie, die Komponente _Card_ einzupacken. –

+0

funktioniert leider nicht –

Verwandte Themen