2017-04-03 5 views
0

returnは、我々はユーザー定義の文字列とクラス名を置き換えることはできませんなぜ、文字列を返す、以来これは私が交換クラス名

var longTextList = this.props.data.map(function(text, index){ 
         return <Thumbnail key={index} style={fontSize} ><div style={fontFamily}><img src={text.sprite} />{text.longText} and get {coinName}(s)</div></Thumbnail>; 
         }); 

何をすべきか、現在あります。

たとえば、<Thumbnail><{this.props.type>との間では、this.props.type=Thumbnailです。

EDIT

私はタイプがサムネイルをレンダリングするために教えてくれるこの

<CardView data={actionList} fontSize={fontSize} fontFamily={fontFamily} coinName={coinName} type="Thumbnail"/> 

のように私のクラスを呼んでいます。

CardView.js

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import { Thumbnail } from 'react-bootstrap'; 


const CardView = React.createClass({ 


    render() { 
     var fontFamily = this.props.fontFamily; 
     var fontSize = this.props.fontSize; 
     var coinName = this.props.coinName; 
     var Type = this.props.type; 
var longTextList = this.props.data.map(function(text, index){ 
         return <Type key={index} style={fontSize} ><div style={fontFamily}><img src={text.sprite} />{text.longText} and get {coinName}(s)</div></Thumbnail>; 
         }); 


     return (
      <div>{longTextList}</div> 
      ); 
    } 
}); 

export default CardView; 

あなたがいる限り、この文字列は、大文字で始まるなどの文字列でクラス名を置き換えることができますエラー

Expected corresponding JSX closing tag for <Type> 
+0

それでも 'は'代わりに、マップ機能での、しかし、私はこれを固定信じていませんしているので、あなたが取得しているエラーがあることができますあなたはとにかくあなたが望むことをやり遂げる。もっと私の答えを見てください。 –

+0

くそー!はい、そうでした。どうやら、私のテキストエディタは単語の折り返しになっておらず、もう一方のタグは画面外だったので、忘れてしまった。申し訳ありませんが、p –

答えて

0

に直面。コンポーネントの最初の文字を大文字にするのはJSX標準です。標準のHTMLタグとコンポーネントを表すカスタムタグとの間に違いをつけることは便利です。その結果tags vs react components

、たとえば、あなたは、ドット表記を使用することができます:ドット表記上の続きを読む<MyVar.mytype/>

あなたが動的にテキスト変数"Tumbnail"を使用してコンポーネントタイプを定義する場合は、あなたが参照する必要があり、中にコンポーネントタイプに関連するコンポーネント。それ以外の場合は、蒸散によってどのコンポーネントを使用するかを推測することはできません。

あなたがしなければならない

をファイル名MyComponent.jsで:

var Type = MyComponents[this.props.type]; 
return <Type/>; 
+0

申し訳ありませんが、私は考えを得ることができませんでした。もう少し説明していただけますか?私の答えでは、 'MyVar = this.props.type'を指定すると' 'を' 'に変更できますが、あなたの例で書いたように –

+0

は動作しません。 'this.props.type = Thumbnail'、' MyVar = this.props.type'は動作します。あなたのケースで 'this.props.type'がどのように定義されていますか? –

+0

編集を参照してください。 –

0

あなたは文字列をバイパスし、ちょうど渡すことができます。

import { Thumbnail } from 'react-bootstrap'; 
const MyComponents={ 
    Thumbnail 
}; 
export default MyComponents; 

インポートMyComponentとは、コンポーネントを反応させるのでは小道具をタイプしますか?

import { Thumbnail } from 'react-bootstrap'; 

<CardView data={actionList} fontSize={fontSize} fontFamily={fontFamily} coinName={coinName} type={Thumbnail}/> 
CardView.js

で今

import React from 'react'; 
import ReactDOM from 'react-dom'; 

const CardView = React.createClass({ 

    render() { 
     var fontFamily = this.props.fontFamily; 
     var fontSize = this.props.fontSize; 
     var coinName = this.props.coinName; 
     var Type = this.props.type; 
     var longTextList = this.props.data.map(function(text, index){ 
           return <Type key={index} style={fontSize} ><div style={fontFamily}><img src={text.sprite} />{text.longText} and get {coinName}(s)</div></Type>; 
          }); 

     return (
      <div>{longTextList}</div> 
      ); 
    } 
}); 

export default CardView;