2016-02-07 13 views
23

Próbuję użyć niektórych funkcji jQuery UI w mojej aplikacji reactJS/Redux. Mam importowane zarówno jQuery i jQuery UI przy użyciu:Jak zaimportować jQuery UI przy użyciu składni ES6/ES7?

npm install jquery jquery-ui 

A potem próbowałem:

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

Jednak jQuery UI nie wydaje się być importowane, gdy próbuję zrobić coś takiego:

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

Uważam, że problem dotyczy interfejsu użytkownika jQuery. Co ja robię źle? Jak mogę uzyskać interfejs użytkownika jQuery do pracy z tym stosem?

Dziękujemy!

+0

rozruchowych, co masz na myśli mówiąc „nie działa "? Gdzie piszesz tę linię? Prawdopodobnie element nie został jeszcze zainicjowany, więc powinieneś używać callback 'componentDidMount' – ZekeDroid

+0

Czy możesz spróbować' console.log ($) 'po zaimportowaniu' $ '? –

+0

@ZekeDroid Przepraszamy, to było w 'componentDidMount()', zredagowałem moje pytanie. –

Odpowiedz

3

nazwa składnika jest jQueryUI (bez myślnika), użyj import jqueryui from 'jquery-ui' lub po prostu import 'jquery-ui'

+0

Kiedy próbuję tego, pojawia się ten błąd, gdy próbuję uruchomić: 'can ' t uruchom plik:/pathToRoot/bin/server.js podano błąd: TypeError: Funkcja obiektu (w) { , jeśli (! w.document) { wyrzuci nowy błąd ("jQuery wymaga okna z dokumentem"); } fabryka powrotu (w); } nie ma metody "rozszerz" na uuid (/pathToRoot/node_modules/jquery-ui/jquery-ui.js:15:3) na obiekcie. (/pathToRoot/node_modules/jquery-ui/jquery-ui.js:316:3) w Module._compile (module.js: 456: 26) w Module._extensions..js (module.js: 474: 10) (** Zobacz następny komentarz do reszty **) –

+0

w require.extensions. (Funkcja anonimowa) (/pathToRoot/node_modules/babel-core/lib/api/register/node.js:214:7) at Object._module3.default._extensions. (Funkcja anonimowa) [jako .js] (/ pathToRoot/node_modules/require-hacker/babel-transpiled-modules/require hacker.js: 250: 71) w Module.load (module. js: 356: 32) w Module._load (module.js: 312: 12) w Function.module._load (/pathToRoot/node_modules/piping/lib/launcher.js:32:16) w Module.require (module.js: 364: 17) ' –

+0

Byłoby pomocne, gdyby możesz udostępnić prosty projekt z minimalnymi zależnościami, aby odtworzyć problem. – Alfiyum

26

ja z powodzeniem przy użyciu częściowego import z jQueryUI. Znaczy importować do mojego modułu tylko to, co potrzebne z jquery-ui:

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'; 

(Ale uwzględniające że używam WebPACK https://webpack.github.io/, w drugim podejściu środowisko może się różnić)

+0

Używając SystemJS/jspm, to podejście działa dla mnie, ale wymaga dodania "!" do końca importu css, np. 'import 'jquery-ui/themes/base/core.css!' ' – greenlaw

4

raz pierwszy,

npm install jquery-ui-bundle --save 

Kiedy muszę, ja

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

Tylko po to, by wyjaśnić" --save ", włącza bibliotekę, ponieważ nie jest ona edytowana ręcznie. Jeśli potrzebujesz zmodyfikować cokolwiek za pomocą niestandardowego kodu, użyjesz '--save-dev' – Callat

Powiązane problemy