2016-05-01 44 views
6

Sto avendo un problema di scoping. Posso console.log this.props.routeParams.key dall'interno del costruttore. Ma quando si trova all'esterno del costruttore, all'interno della funzione filterList, viene visualizzato l'errore "Unchaught TypeError: Impossibile leggere la proprietà 'props' di undefined". Qual è il mio problema di scoping? Perché può leggere questo dal costruttore ma non dalla funzione filterList?Scoping in React + React Router

Sto usando React Router + Flux + React.

import AltContainer from 'alt-container'; 
import React from 'react'; 
import { Link } from 'react-router'; 
import Blogger from './Blogger' 
import List from './List' 
const rootURL = 'https://incandescent-fire-6143.firebaseio.com/'; 

import BlogStore from '../stores/BlogStore' 
import BlogActions from '../actions/BlogActions'; 


export default class BlogShow extends React.Component { 
    constructor(props) { 
    super(props); 
    {console.log(this.props.routeParams.key)} 
} 


filterList(key) { 
    if (this.props.routeParams.key===key){ 
    return Blogstore.state.blog 
    } 
} 

    render() { 
      {Object.keys(BlogStore.state.blog).map(this.filterList)} 
    } 
} 

risposta

4

che sta accadendo perché la funzione filterlist non è vincolato al componente

Bind nel vostro costruttore

constructor(props) { 
    super(props); 
    this.filterList = this.filterList.bind(this); 
} 

avete letto su di esso here

+0

Grazie. Questo è esattamente corretto. Puoi per favore spiegare la logica dietro questo? – CodeYogi

+1

come ho detto, se non si associa la funzione al componente, "questo" sarà indefinito perché non esiste l'autobinding nelle classi ES6. Se la risposta ti ha aiutato, dovresti accettarlo. – QoP

+0

Come posso accettarlo? Ho fatto clic sul segno di spunta verde. È ciò che intendi? – CodeYogi