Почему добавление тега <script> во время выполнения не загружает файл javascript? (с реакцией .js)

У меня есть этот response.js script, который добавляет следующий код в html

// returned by the render method
React.DOM.div({
    dangerouslySetInnerHTML:  {
        __html: '<script type="text/javascript" async="" src="//myapp.disqus.com/embed.js"></script>'
    }
})

Теперь мой html выглядит так:

<script type="text/javascript" async="" src="//myapp.disqus.com/embed.js"></script>

Что кажется идеальным, но проблема в том, что он не загружает script. Тег script вставляется в середину тела, вложенного в некоторые другие теги div.

В чем может быть проблема? Благодаря

Ответ 1

Рендеринг тега script на странице с ответом - это не правильное решение - я не могу заставить его работать с JSX, я предполагаю, что здесь применяется то же самое. Не уверен, почему, но просто добавьте простой способ javascript:

    var script = document.createElement("script");

    script.src = "//myapp.disqus.com/embed.js";
    script.async = true;

    document.body.appendChild(script);

Поместите это в componentWillMount вашего корневого компонента.

Ответ 2

Я только что добавил Disqus в свое приложение React. Я использовал модуль "реакция-disqus-thread" и быстро и быстро его запускал.

Здесь он находится на github: https://github.com/mzabriskie/react-disqus-thread

И npm: https://www.npmjs.com/package/react-disqus-thread

Компонент принимает следующие реквизиты:

  • shortname - это "myapp" в //myapp.disqus.com/embed.js
  • identifier - уникальный blogId, который может идентифицировать ваш пост в блоге, если URL-адрес изменится.
  • title
  • url - если вы этого не сделаете, модуль обнаружит URL-адрес и предоставит его.

Ответ 3

Какой браузер вы протестировали? Если вы используете async = "true" в тэге script, он не будет блокироваться. Но это поддерживается только несколькими браузерами.