2016-04-11 3 views
1

Я только начинаю использовать SystemJS/JSPM с React. В моем приложении я использую некоторые сторонние библиотеки, которые не входят ни в один из распространенных форматов JS-модуля, таких как AMD, CJS и т. Д., Поэтому, когда я устанавливаю эти библиотеки, они устанавливаются как глобальные модули .eg здесь - это файл js, сгенерированный JSPM для одной библиотеки:Задержка импорта в SystemJS

module.exports = require("npm:[email protected]/dist/js/app.js"); 

Эта библиотека имеет некоторые инициализации запуск кода при импорте, так что ожидает, что DOM элементы готовы до этого. Если я импортирую и использую его вместе с React следующим образом:

import adminlte from "adminlte"; 

export default class Root extends React.Component { 
    render() { 
     return (
      <div className="wrapper"> 
       <MainHeader /> 
       <MainSidebar /> 
       <MainContent /> 
       <MainFooter /> 
       <ControlSidebar /> 
      </div> 
     ); 
    } 
} 

Это не работает. Я думаю, потому что библиотека импортирована и ее код инициализации запускается до того, как React отобразит DOM в браузере. Итак, есть ли способ отложить импорт сторонней библиотеки до тех пор, пока DOM не будет предоставлен React?

Я смотрю в какое-то событие жизненного цикла в React как componentDidMount, и т.д., но все еще не знает, как сделать это правильно

+0

'import' заявления, к сожалению, не может быть загружен условно или на в- летать, как 'require()' statement – lux

ответ

1

Наконец работать вокруг импортируя стороннюю библиотеку с помощью System.import() после того, как основное приложение уже загружен:

<script type="text/javascript"> 
    System.import("js/app/main.js") 
     .then(() => { 
      System.import("adminlte"); 
     });  
</script> 

это может быть не лучший способ решить эту проблему, так что если кто-то есть лучший способ, пожалуйста, предложите его

 Смежные вопросы

  • Нет связанных вопросов^_^