Script de chargement de réagir
Je veux charger le script à partir d'un CDN et puis exécutez une fonction exposée par le script de Réagir:
componentWillMount() {
console.log('componentWillMount is called');
const script = document.createElement('script');
script.src = 'https://foo.azurewebsites.net/foo.js';
document.body.appendChild(script);
}
componentDidMount() {
console.log('componentDidMount is called');
window.foo.render({
formId: '77fd8848-791a-4f13-9c82-d24f9290edd7',
}, '#container');
}
render() {
console.log('render is called');
return (
<div id="container"></div>
);
}
Le script prend parfois du temps à se charger (généralement pour la première fois) et quand componentDidMount()
s'appelle "toto" n'est pas disponible et j'obtiens une erreur comme ceci:
TypeError: Cannot read property 'render' undefined
Comment puis-je assurer que componentDidMount()
est appelée une fois que le script est chargé avec succès?
Comment êtes-vous chargement des scripts?
oui juste pour cette composante que nous en avons besoin à partir d'un cdn
Mettez votre application et de Réagir balise de script ci-dessous la CAN balise de script, de sorte que le navigateur doit charger le
Regarde comme il est un
J'ai déplacé que pour la index.html pour être sur le côté plus sûr.
<script>
tags?oui juste pour cette composante que nous en avons besoin à partir d'un cdn
Mettez votre application et de Réagir balise de script ci-dessous la CAN balise de script, de sorte que le navigateur doit charger le
render
fonction première.Regarde comme il est un
onload
fonctionnalité lors de l'ajout de scripts dans le corps du document, de sorte que vous pourriez avoir certains disent un booléen dans l'état du composant de garder une trace de l'état de charge, et dans le onload
régler la fonction de l'état "chargé" boolean à true. Puis dans votre fonction rendu de vérifier l'état de la valeur. Voici une recherche sur google: google.com.au/...*J'ai déplacé que pour la index.html pour être sur le côté plus sûr.
OriginalL'auteur Abhijeet | 2017-03-17
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que c'est une bonne idée de charger les scripts dans componentWillMount() ou componentDidMount(), selon Réagir Composant Spécifications et Cycle de vie.
Le code ci-dessous peut vous aider.
OriginalL'auteur Y.Peng