2017-01-21 6 views
0

私はReact.jsを学習していて、私のfirtコンポーネントをレンダリングすることはできません。私のプロジェクトは、次のようになります。React.jsでbrowserifyのインポートが機能しない

javascript 
    | 
    --components 
    | | 
    | ---- searchbar.jsx 
    | 
    |  
    --app.jsx 

searchbar.jsx:

export default class SearchBar extends React.Component { 
    //some code 

    render(){ 
     //some code 
    } 
} 

app.jsxは次のようになります。

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import { SearchBar } from './components/searchbar.jsx'; 

ReactDOM.render(

     <App /> 
     , 
    document.getElementById('content') 
); 

class App extends React.Component { 



    render() { 
     <div> 
      <SearchBar placeHolder='search bar text'/> 
     </div> 
    } 
} 

コンパイルしてパックするとエラーはありません。私はそれを実行したときしかし、私は次のエラーを取得しています:私はapp.jsxのすべてのコードを入れて、すべてが...べきと検索バーが表示されているとして働いて、その後何のインポートを使用していないが、私は入れたい

Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in. 
    printWarning 
    warning 
    createElement 
    1../components/searchbar.jsx 

異なるファイルのコンポーネント。どうすればいいですか?

答えて

1

検索バーモジュールは、デフォルト値ではなく、名前の輸出をエクスポート(中括弧で囲むことで、あなたが名前のエクスポートを必要とブレース)

あなたはさらにimport { SearchBar }

import SearchBarに変更する必要があり、あなたはの宣言を移動する必要がありますアプリケーションはファイルの先頭に向かって使用する前に宣言する必要があります

+0

いいえ、役に立たなかったです。私はまだ同じエラーが発生しています。はい、私は再コンパイルして再度パックしました。私はgulpファイルでwatchifyを使用します。 – Jakub

+0

'ReactDOM.render'で使用される前に、' App'クラスの宣言をインポートの直後に移動してみてください。私が 'class'宣言から' var'宣言のように宣言されていないものhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Hoisting –

+0

ああ、ありがとうございました。ありがとうございました。 – Jakub

関連する問題