Perdoa, que o único que fixera fora cortar o do outro fío e pegalo aquí. Agora están un pouco máis desmenuzadas as cousas.
Respecto a que che pareza enganoso, a realidade é que React funciona con vistas modeladas en JavaScript, e que procesa mediante unha implementación dunha tecnoloxía chamada Shadow DOM.
Respecto a JSX, é unha linguaxe moi sinxela que compila a JavaScript, e que pode empregarse ou non. Non só JSX, tamén poderías empregar TypeScript ou CoffeeScript se quixeras: ao final todo iso é JavaScript igualmente.
E ojo cuidao, que JSX NON É HTML, aínda que se parezca visualmente. En serio, é un JavaScript en pel de XML, pero o que hai debaixo é máis importante cás apariencias.
Facebook emprega JSX porque para o proceso de describir unha vista HTML é moito máis semellante, pero ten en conta que este código JSX:
<div className="warning">This is <strong>NOT</strong>HTML</div>
convértese en
React.createElement("div", { className: "warning" },
"This is ",
React.createElement("strong", null,
"NOT"
),
" HTML."
);
Ver online.
Respecto de mecanismos para acceder a APIs, por unha parte, recordo, que seguimos nun navegador, e que non fai falla moita maquinaria do framework de presentación para facer peticións web, e menos dende que temos window.fetch.
Home, eu diría que escribir <div ngif={{ expresion }}>...</div>
é exactamente escribir HTML xunto con JavaScript. Neste aspecto, en React só escribes JavaScript (a pesar de que poidas describir os compoñentes en JSX, recorda que iso simplemente é unha comodidade de escritura para non ter que escribir todo o rato React.createElement
.
E, en calquera caso, respecto a isto haberá que tomar unha decisión, pero en React tes ambas posibilidades: ou ben,
var listElements = [];
for(var item in this.state.items) {
listElements.append(React.createElement("ListElement", null, item));
}
return React.createElement.bind(this, "List").apply(listElements);
Ou ben (empregando os React-Templates de Wix)
<ul>
<li rt-repeat="item in this.state.items">{item}</li>
</ul>
Evidentemente, a decisión incial de Angular de ter solo two-way binding non tiña ningún sentido. two-way binding fai que non teñas que pensar sobre os poucos datos que dan igual na interface, a costa de empeorar o rendemento e de desdefinir o fluxo de recorrido dos datos. React está pensado para empregar o paradigma Flux: de xeito que os datos sempre se actualizan dende un mesmo sitio, e pensando nas accións que parten do usuario como emisoras de eventos, de xeito que a manipulación dos cambios baséase nos principios da programación reactiva (orientada a cambios: os compoñentes escoitan eventos, reaccionan e/ou pásanos aos descendentes oportunos).
Respecto a boas prácticas en cargar datos remotos, hai un exemplo na web de React. Aínda así, en calquera caso, a clase/obxecto que nós teñamos como API Wrapper na web app debería de ser noso, e non un artello do framework.
E a que te refires con isto, en calquera caso?
Aquí supoño que un deles era React? 
Con isto non quero dicir que React sexa mellor nin moito menos pero, como o coñezo algo, gustaríame que non se viran desvantaxes donde non as hai, para levar a conversa cara onde poidan estar as diferencias.