2016-04-20 9 views
0

Ich baue eine Komponente reagieren, die Devbridge's AutocompletejQuery Plugin benötigt. Das Problem ist, wie man das Plugin über npm lädt. Früher habe ich bereits this suggestion gesehen:Jquery Plugins in React Browserify mit

import React from 'react'; 
global.jQuery = require('jquery'); 
require('autocomplete'); 

class Search extends React.Component{ 
    componentDidMount(){ 
    let id = this.props.clientId; 
    jQuery(function(){ 
     jQuery('#autocomplete').autocomplete({ 
      serviceUrl: `https://api.soundcloud.com/tracks?client_id=${id}`, 
      onSelect: function (suggestion) { 
       // this.props.handleSearch(suggestion); 
       console.log(suggestion); 
      } 
     }); 
    }); 
    } 
    render() { 
    return (
     <div className="search"> 
     <input type="text" name="tracks" id="autocomplete"/> 
     </div> 
    ); 
    } 
} 

export default Search 

... und haben die folgenden in meinem package.json:

"browser": { 
     "autocomplete": "./node_modules/devbridge-autocomplete/dist/jquery.autocomplete.js" 
    } 

... aber ich halte die folgende Fehlermeldung erhalten:

Uncaught TypeError: jQuery(...).autocomplete is not a function 

Antwort

0

Ich denke, dass Sie die jquery-ui.js hinzufügen müssen, um die Autocomplete-Box zu laden, die ich gerade geladen habe js und unter dem Code

implementiert
var Parent=React.createClass({ 
    componentDidMount:function() 
    { 
     var availableTags = [ 
     "ActionScript", 
     "AppleScript", 
     "Asp", 
     "BASIC", 
     "C", 
     "C++", 
     "Clojure", 
     "COBOL", 
     "ColdFusion", 
     "Erlang", 
     "Fortran", 
     "Groovy", 
     "Haskell", 
     "Java", 
     "JavaScript", 
     "Lisp", 
     "Perl", 
     "PHP", 
     "Python", 
     "Ruby", 
     "Scala", 
     "Scheme" 
    ]; 
    $("#autocomplete").autocomplete({ 
    source: availableTags 
    }); 
    }, 
    render:function() 
    { 
    return(
     <div> 

     <input type="text" name="tracks" id="autocomplete" placeholder="enter text start from any coding language " style={{"width":"400px;"}}/> 
     </div> 
    ) 
    } 
}); 

Demo

+0

Hallo! Danke für die Antwort. Ich benutze hier browserify, deshalb werden meine Pakete über npm und nicht mit dem Skript-Tag geladen, so dass sie gebündelt werden können. Zweitens, ich bin nicht jquery-ui der zur automatischen Vervollständigung aber [devbridge ist] (https://github.com/devbridge/jQuery-Autocomplete) – Chris

+1

@ Chris mit: ohh, aber was Sie verwendet haben es für JQuery ist, warum benutzt man es für Reagieren Sie haben etwas anderes zu verwenden, das ist React-Komponente wie https://github.com/reactjs/react-autocomplete –

+0

Nice. Danke, dass du mich darauf hingewiesen hast, aber ich werde es begrüßen, wenn meine Frage tatsächlich beantwortet wird. – Chris