Como o SEO influencia as mudanças da página ReactJS
Pergunta
Estou usando um controlador simples para alterar minha visualização ReactJS mostrada assim:
getInitialState: function() {
return {view: null};
},
setViewFromHash: function () {
var that = this;
var address = window.location.hash;
if(address != "")
{
address = address.substring(1);
require(["jsx!" + address], function (View) {
that.setState({view: View});
});
}
else
{
require(["jsx!Home"], function (View) {
that.setState({view: View});
});
}
},
componentWillMount: function () {
var that = this;
window.onhashchange = function () {
that.setViewFromHash();
};
this.setViewFromHash();
},
onTitleUpdate: function(title, canonical) {
document.title = title + titleDefault;
$('link[rel=canonical]').prop('href', canonicalDefault + canonical);
},
render: function () {
var viewToLoad = null;
if (this.state.view === null) {
viewToLoad = "Loading...";
} else {
viewToLoad = this.state.view({ onTitleUpdate: this.onTitleUpdate });
}
return (
<article>
{viewToLoad}
</article>
);
}
Na visualização eu aciono um retorno de chamada:
var Home = React.createClass({
render: function () {
this.props.onTitleUpdate("Home", "");
...
Minha pergunta é: esse retorno de chamada ocorre em um ponto que beneficiaria o SEO, ou seja, o título da página e as alterações canônicas são atualizados de uma forma que aciona o bot do Google para perceber que o título e o canônico foram alterados?
Também estou pensando em usar Córtex para gerenciar meus dados, isso será melhor?Pior?Não é diferente?Quanto à percepção do bot SEO/Google sobre a "página" que ele está visualizando?
Solução
O Google geralmente mantém em segredo os detalhes sobre quando executa o JavaScript;considere esta citação de 2010:
"Por um tempo, estávamos escaneando em JavaScript e procurando links.O Google ficou mais inteligente em relação ao JavaScript e pode executar algum JavaScript.Eu não diria que executamos todo o JavaScript, então existem algumas condições em que não executamos o JavaScript.Certamente existem algumas coisas JavaScript comuns e conhecidas, como o Google Analytics, que você nem gostaria de executar porque não gostaria de tentar gerar visitas fantasmas do Googlebot para o seu Google Analytics".
Em geral, eu simplesmente presumiria que o Google (e certamente alguns outros mecanismos de pesquisa) não executará meu JavaScript, o que significa que quaisquer alterações que eu fizer na página não serão detectadas.Claro, você pode simplesmente tentar e veja o que o Google vê para saber se funcionou.
Em ambos os casos, o React tem a capacidade de renderizar no lado do servidor e conectar de forma transparente seus manipuladores de eventos ao cliente, proporcionando a você a capacidade de lidar com ambos facilmente.(Talvez seja necessário reorganizar algum código para fazê-lo funcionar em ambos os contextos.)