Oi.
No código:
like(fotoId) {
fetch(`http://localhost:8080/api/fotos/${fotoId}/like?X-AUTH-TOKEN=${localStorage.getItem('auth-token')}`,{method:'POST'})
.then(response => {
if(response.ok) {
return response.json();
} else {
throw new Error("não foi possível realizar o like da foto");
}
})
.then(liker => {
Pubsub.publish('atualiza-liker',{fotoId,liker});
});
}
comenta(fotoId,textoComentario) {
const requestInfo = {
method:'POST',
body:JSON.stringify({texto:textoComentario}),
headers: new Headers({
'Content-type':'application/json'
})
};
fetch(`http://localhost:8080/api/fotos/${fotoId}/comment?X-AUTH-TOKEN=${localStorage.getItem('auth-token')}`,requestInfo)
.then(response => {
if(response.ok){
return response.json();
} else {
throw new Error("não foi possível comentar");
}
})
.then(novoComentario => {
Pubsub.publish('novos-comentarios',{fotoId,novoComentario});
});
}
Aqui nessa função abaixo, aparece o Pubsub.subscribe:
componentWillMount(){
Pubsub.subscribe('novos-comentarios',(topico,infoComentario) => {
const fotoAchada = this.state.fotos.find(foto => foto.id === infoComentario.fotoId);
fotoAchada.comentarios.push(infoComentario.novoComentario);
this.setState({fotos:this.state.fotos});
});
}
Como/quando roda esse código , (o código dos subscribers)?
O 'Pubsub.publish' roda depois de "ComponentWillMount" ser chamado, certo?
Seria a declaração de subscribe no "ComponetWillMount" uma estratégia?
Tipo, desde o começo do código do componente, já se inscreve pra quando em algum lugar, rodar o publish no canal 'novos-comentarios', por exemplo, e o código no subscribe de 'novos-comentarios', (no "ComponentWillMount") roda? Independente se o "ComponentWillMount" já tiver sido chamado?
Obrigado!