2016-03-12 7 views
15

ho questo:Che cosa significa "I componenti della funzione stateless non possono essere referenziati" significa?

const ProjectsSummaryLayout = ({projects}) => { 
    return (
     <div className="projects-summary col-md-10"> 
      <h3>Projects</h3> 
      <ul> 
       { projects.map(p => <li key={p.id}>{p.contract.client}</li>) } 
      </ul> 
     </div> 
    ) 
} 

const ProjectsSummary = connect(
    state => ({projects: state.projects}) 
)(ProjectsSummaryLayout) 

e ottengo:

Attenzione: Le componenti di funzione senza Stato non può essere data arbitri (vedere ref "wrappedInstance" in ProjectsSummaryLayout creato da Connect (ProjectsSummaryLayout)). I tentativi di accedere a questo riferimento falliscono .

Che cosa sta cercando di dirmi? Sto davvero facendo qualcosa di sbagliato?

Vedo la discussione su questo here ma sfortunatamente non capisco la conclusione.

risposta

19

In React, refs may not be attached to a stateless component.

Da quanto ho capito, Reagire Redux attribuisce un ref al componente si dà indipendentemente dal fatto che si tratta di apolidi. L'avviso che vedi proviene da React perché internamente, React Redux 3 allega un componente ref al componente stateless fornito (ProjectsSummaryLayout).

Non stai facendo nulla di sbagliato e, secondo this GitHub comment, puoi tranquillamente ignorare l'avviso.

In Reagire Redux , non ref è attaccato alla componente avvolto di default, il che significa che se si aggiorna a reagire Redux 4, l'avviso dovrebbe andare via.

+0

Notato lo stesso problema con react-dnd. Avvertenza: non è possibile fornire i componenti della funzione stateless. I tentativi di accedere a questo riferimento falliranno. Controllare il metodo di rendering di 'DragSource (Component)'. – Sri

0

React ha 2 stili di componenti comunemente utilizzati.

  • componente funzionale
  • classe Component

Così, quando stavo facendo uso di uno funzionale, allora stavo incontrando questo errore. error encountered when I was using functional component

Codice frammento corrispondente alla componente funzionale

code for square component

Ma non appena ho cambiato in classe Component allora ha funzionato.

it worked

frammento di codice corrispondente alla classe Component.

enter image description here

provare a cambiare componente funzionale alla classe Component. Spero che risolva il tuo problema.