2016-02-07 15 views
23

reactJS/Redux uygulamasında bazı jQuery UI işlevlerini kullanmaya çalışıyorum. Ben kullanarak hem jQuery ve jQuery UI ithal ettik:jQuery UI, ES6/ES7 sözdizimini kullanarak nasıl içe aktarılır?

npm install jquery jquery-ui 

Sonra denedim:

import $ from 'jquery'; 
import jQuery from 'query'; 
import jQuery-ui from 'jquery-ui'; 

ben böyle bir şey yapmak çalıştığınızda Ancak jQuery UI ithal edilecek görünmüyor:

componentDidMount() { 
    $('ol#myList').selectable(); 
} 

Sorunun jQuery UI ile olduğuna inanıyorum. Neyi yanlış yapıyorum? JQuery UI'yi bu yığınla çalışmak için nasıl alabilirim?

Teşekkür ederiz!

+0

"çalışmıyor "? Bu çizgiyi nereye yazıyorsun? Öğenin henüz başlatılmamış olması muhtemeldir, bu yüzden 'componentDidMount' geridönüşümünü kullanmalısınız – ZekeDroid

+0

' $ 'ı aldıktan sonra' console.log ($) 'ı çalıştırabilir misiniz? –

+0

@ZekeDroid Üzgünüz, bu 'componentDidMount() 'idi, sorumu düzenledim. –

cevap

3

bileşen adı jQueryUI (hayır tire), import jqueryui from 'jquery-ui' veya basitçe import 'jquery-ui'

+0

Bunu denediğimde, çalıştırmayı denediğimde şu hatayı alıyorum: 'can ' t dosyayı çalıştır:/pathToRoot/bin/server.js hatası verildi: TypeError: Object işlevi (w) { eğer (! w.document) { yeni hata attı ("jQuery bir belgeye sahip bir pencere gerektirir"); } dönüş fabrikası (w); }, Object'te uuid (/pathToRoot/node_modules/jquery-ui/jquery-ui.js:15:3) adresinde 'extend' yöntemine sahip değildir. Module._compile (module.js: 456: 26) adresinde (/pathToRoot/node_modules/jquery-ui/jquery-ui.js:316:3) (Module.js: 456: 26), Module._extensions..js (module.js: 474: 10) (** require.extensions de kalanına **) –

+0

için bir sonraki yoruma bakın. (anonim işlev) (/pathToRoot/node_modules/babel-core/lib/api/register/node.js:214:7) de Object.module3.default._extensions. (Anonim işlev) [as .js] (/ pathToRoot/node_modules/require-hacker/babel-transpiled-modules/gerektirir hacker.js: 250: 71) Module.load'da (modül. js: 356: 32) Module.load adresindeki (module.js: 312: 12) at Function.module._load (/pathToRoot/node_modules/piping/lib/launcher.js:32:16) Module.require adresindeki (module.js: 364: 17) ' –

+0

Y Sorununuzu çoğaltmak için basit bir projeyi asgari bağımlılıkla paylaşabiliriz. – Alfiyum

26

başarıyla jQueryUI kısmi ithalat kullanıyorum kullanmaktır.

+0

SystemJS/jspm'yi kullanarak bu yaklaşım benim için işe yarıyor ama '!' Eklemek gerekiyor css ithalatının sonuna, ör. 'import' jquery-ui/themes/base/core.css! '' – greenlaw

1

bir takma adı ekleyin

import $ from 'jquery'; 
import 'jquery-ui/themes/base/core.css'; 
import 'jquery-ui/themes/base/theme.css'; 
import 'jquery-ui/themes/base/selectable.css'; 
import 'jquery-ui/ui/core'; 
import 'jquery-ui/ui/widgets/selectable'; 

(Ama farklı olabilir diğer çevre yaklaşımında, ben WebPack https://webpack.github.io/ kullanıyorum hesapta almak): Ben jquery-ui den gerekli yalnızca ne zaman modülüne içe demek webpack yapılandırma: package.json kendilerine kaydet

resolve: { 
    alias: { 
    'jquery-ui': 'jquery-ui-dist/jquery-ui.js' 
    } 
} 

:

npm i --save jquery 
npm i --save jquery-ui-dist 

Sonra

import $ from 'jquery'; 
import 'jquery-ui'; 

Geçen jquery (3.2.1) ve jquery-ui (1.12.1) ile benim için çalışıyor.

ayrıntı için blogumu bakınız: Ben ilk http://code.tonytuan.org/2017/03/webpack-import-jquery-ui-in-es6-syntax.html

4

,

buna ihtiyacım
npm install jquery-ui-bundle --save 

, sana göre ne anlama geliyor başlayanlar için

import 'jquery-ui-bundle'; 
import 'jquery-ui-bundle/jquery-ui.css'; 
+0

Sadece açıklığa kavuşturmak için' --save' el ile düzenlenmediğinden kütüphaneyi içerir. Özel kodla herhangi bir şeyi değiştirmeniz gerekirse '--save-dev' – Callat

İlgili konular