2017-10-04 21 views
1

sweetalert-reactパッケージ(https://github.com/chentsulin/sweetalert-react)を私のアプリケーションのモーダルとして使用しようとしています。 は今、私はそれが動作するようになったが、私は私のコンポーネントを持っているのconstを表示できるようにしたい:有効なReactElementを渡す必要があります。 Sweetalert-react

const clusterDoors = lock.doors.map(clusterDoor => { 
    return (
    <div key={clusterDoor.port_id}> 
     <ClusterListItem 
     clusterDoor={clusterDoor} 
     customer={ 
      clusterDoor.allocation.customer ? (
      keyedCustomers[clusterDoor.allocation.customer] 
     ) : (
      false 
     ) 
     } 
     ..... 

だから私は彼らのドキュメントを読んで、私はReactDOMServer.renderToStaticMarkupでそれを達成できることを見出しました。だから私に簡単な必要性:

text={renderToStaticMarkup(<MyComponent />)} 

しかし、問題は、私がやろうので、もし私のコンポーネントは、定数の内部にあるということである。

text={renderToStaticMarkup({clusterDoors})} 

私はエラーが発生します。

You must pass a valid ReactElement.

これにはいくつかの回避策がありますか?

は、私はいくつかの研究を行なったし、またやってみましたみました:

const clusterDoors = React.createClass({ 
    render: function() { 
    lock.doors.map(clusterDoor => { 
     return (
     <div key={clusterDoor.port_id}> 
      <ClusterListItem 
      clusterDoor={clusterDoor} 
      customer={ 
       clusterDoor.allocation.customer ? (
       keyedCustomers[clusterDoor.allocation.customer] 
      ) : (
       false 
      ) 
      } 
      delivery={ 
       clusterDoor.allocation.delivery ? (
       keyedDeliveries[clusterDoor.allocation.delivery] 
      ) : (
       false 
      ) 
      } 
      /> 
     </div> 
    ) 
    }) 
    } 
}) 

しかし、それはトリックをしませんでした。

有効な反応成分(ClusterListItem)を渡すと、私のアプリは破損しませんが、array clusterDoorが存在しないため、何も表示されません。

私は自分の状況をよく説明してくれることを願っています。読んでくれてありがとう。

+1

てみ 'テキスト= {renderToStaticMarkup(

{clusterDoors}
)}' keyedCustomers [clusterDoorは何 ' –

+1

のような単一のノード要素になるようにするだけdivタグであなたの配列を包みます。 allocation.customer] '?あなたの三元詞で偽の条件が「偽」に設定されているのはなぜですか? 'keyedCustomers [clusterDoor.allocation.customer]'は実際に 'true'を返しますか? – Andrew

+1

@Prakashsharmaあなたは正しいです。あなたが答えを出すなら、私はそれを受け入れるでしょう。ありがとう。 –

答えて

1

コードの問題は、clusterDoorsが配列で、renderToStaticMarkupが1つの要素を必要としているため、要素の配列を渡していることです。したがって、このエラーが発生しています。

ソリューション:それはこの

text={renderToStaticMarkup(<div>{clusterDoors}</div>)} 
関連する問題