2017-05-22 9 views
1

ES5では、私はこのようなクラスに反応格納することができJS変数内のクラスに反応:ES6の構文を変換しようとする試みでの保存が

const myReactClasses = { 
    inlineStyles : { 
     ... 
    }, 

    firstClass : React.createClass({ 
     myFunction : function() { 
      ... 
     }, 
    }), 
} 

、私が試してみた:

const myReactClasses = { 
    inlineStyles : { 
     ... 
    }, 

    firstClass : class firstClass extends React.Component { 
     myFunction() { 
      ... 
     }, 
    }, 
} 

gulpを使用してコンパイルします。しかし、Reactがレンダリングするページに移動すると、エラーが発生します。Uncaught TypeError:未定義のプロパティ 'prototype'を読み取ることができません。これはES5からES6への同じ振る舞いを複製する正しい方法ですか、私は単にアプリケーションのどこかでもっとうんざりしましたか、それとも間違っていますか?それが間違っている場合は、見た目のサンプルスニペットを提供してください。

答えて

0

反応クラスを値としてオブジェクトに入れたい場合(中間変数なし)、代わりにES6以外の構文を使用できます。例:

var createReactClass = require('create-react-class'); 

const myReactClasses = { 
    firstClass : createReactClass({ 
    render: function() { 
     return <h1>Hello, {this.props.name}</h1>; 
    }, 
    } 
} 

ES6の構文は値を返すが、あなたはこのように書く必要があるので、変数を作成しません:私は見

class firstClass extends React.Component { 
    myFunction() { 
    render: function() { 
     return <h1>Hello, {this.props.name}</h1>; 
    }, 
    }, 
} 

const myReactClasses = { 
    firstClass : firstClass, 
} 

# or more simple 

const myReactClasses = { 
    firstClass, 
} 
+0

例をありがとう!役に立った – crossfuse999

1

定数をmyReactClassesの外部に定義します。

JS構文では、実行しようとしていることを許可していません。いずれの方法でも、可読性以外の理由がない場合は、コンポーネントを含むオブジェクトの外部ファイルにコンポーネントを定義する必要があります。

+0

ああ。ありがとうございました!私はこれを知らなかった – crossfuse999