2016-04-29 21 views
2

に反応私は2つのこのような要素に反応定義しました。 WebpackとBabelを使ってES5にトランスコンパイルします。どのように誰もが知っていダイナミックコンポーネント名には、+のWebPACK + ES6

render() { 
    var Cmp = Math.random() > 0.5 ? CmpA : CmpB; 
    return _react2.default.createElement('Cmp', {}); 
} 

:私は何をしたい変数でコンポーネント定義を保存し、それをレンダリングすることです:

render() { 
    let Cmp = Math.random() > 0.5 ? CmpA : CmpB; 
    return <Cmp />; 
} 

しかし、上記のコードはに変換するので、それは動作しません。この問題を克服する?

[UPDATE]

は、私はこのようなCmpを使用する必要があることも考慮してください:

render() { 
    let Cmp = Math.random() > 0.5 ? CmpA : CmpB; 
    return <div><Cmp /></div>; 
} 

、または他の言葉で、私は動的コンポーネントに名前を付けることができるようにする必要があります!

ここに私のプロジェクトのpackage.jsonファイルの内容だ[UPDATE]:私はあなたがそれをこのように行うことができます信じてい

{ 
    "name": "expandable-react-redux", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "keywords": [], 
    "author": "Mehran", 
    "license": "ISC", 
    "dependencies": { 
    "babel-plugin-transform-decorators-legacy": "^1.3.4", 
    "babel-preset-es2015": "^6.6.0", 
    "babel-preset-react": "^6.5.0", 
    "react": "^15.0.1", 
    "react-dom": "^15.0.1", 
    "react-redux": "^4.4.2", 
    "redux": "^3.4.0" 
    }, 
    "devDependencies": { 
    "babel-core": "^6.7.6", 
    "babel-loader": "^6.2.4", 
    "react-hot-loader": "^1.3.0", 
    "webpack": "^1.12.14" 
    } 
} 
+0

を私は得ることはありません私が試してみると「Cmp」です。本気ですか? http://babeljs.io/repl/#?evaluate=true&presets=es2015%2Creact&code=class%20Foo%20%7B%0A%20%20render()%20%7B%0A%20%20%20%20let% 20Cmp%20%3D%20Math.random()%20%3E%200.5%20%3F%20CmpA%20%3A%20CmpB%3B%0A%20%20%20%20return%20%3CCmp%20%2F% 3E%3B%0A%20%20%7D%0A%7D – loganfsmyth

+0

コードはここに貼り付けられますので、私はかなり確信しています。おそらく、私が 'package.json'で使った依存関係のためです!私は私の質問にそれを含めます。 – Mehran

+1

バンドル処理に問題があります。あなたの '.babelrc'と' webpack.config.js'を見てみるといいかもしれません。 –

答えて

2

render() { 
    const props = { prop1: 10 }; 
    let Cmp = Math.random() > 0.5 ? <CmpA {...props} /> : <CmpB {...props} />; 
    return <div>{Cmp}</div>; 
} 
+0

あなたは答えが正しいですが、私が探しているものではありません!私は私の問題をよりよく反映するように質問を更新しました。 – Mehran

+0

あなたの質問に一致する答えを更新しました。 –

+0

ありがとう、でも、私は何とか '{Cmp}'のプロパティを設定できますか? '{Cmp prop1 =" 10 "}'のように? – Mehran

関連する問題