2017-04-02 1 views
3

は、しかし、それはnullを返します:Reactコンポーネントにes6インポートエイリアス構文を使用できますか?私は、次のような何かをしようとしている

import { Button as styledButton } from 'component-library' 

はその後としてそれをレンダリングしようとする:理由がある

import React, { PropTypes } from "react"; 
import cx from 'classNames'; 

import { Button as styledButton } from 'component-library'; 

export default class Button extends React.Component { 
    constructor(props){ 
     super(props) 
    } 
    render() { 
     return (
       <styledButton {...this.props}></styledButton> 
     ) 
    } 
} 

、私はButtonコンポーネントをインポートする必要があります同じ名前のラッパーコンポーネントをエクスポートしますが、インポートされたコンポーネントから機能を維持することもできます。私がそれをimport { Button } from component libraryに残しておけば、もちろん、私は複数の宣言エラーが発生します。

アイデア?

+1

を? – Ved

+2

Reactコンポーネントは大文字で始まります: 'StyledButton'ではなく' StyledButton'です。 – topheman

+0

@Ved私は反応スタイルガイドを使ってすべてのコンポーネントを表示し、コンポーネントライブラリ内のすべてのコンポーネントをラップする必要があります。クラスボタン名を変更すると、 'show code'はプレイグラウンド内のすべてのコンポーネントに対して異なる名前になります。 –

答えて

7

構文が有効です。 JSXはReact.createElement(type)の構文シュガーで、typeが有効なReact型であれば、JSXの "tags"で使用できます。 Buttonがnullの場合、インポートは正しくありません。たぶんボタンは、コンポーネントライブラリからのデフォルトのエクスポートです。試してみてください:

import {default as StyledButton} from "component-library"; 
+0

うーん、動作していないようです。 ボタンはライブラリ内で次のように定義されています: '' 'import {ButtonCore} from 'react-atlas-core'; {reaction-atlas-default-theme 'から{ButtonStyle}をインポートします。 輸出constボタン= CSSModules(ButtonCore、ButtonStyle、{allowMultiple:true}); '' ' –

+0

デフォルトのエクスポートは使用されません。だから私は何も返さないというIDEAを持っていません。 –

+0

構文とあなたの意図が有効なので、間違っていると思われるものを再評価するでしょう。あなたは何を得ているのですか? – chris

2

なぜ私がエイリアスをインポートできないのかわかりません。回避策として

、私はこれをやってしまった:

import React, { PropTypes } from "react"; 
import * as StyledLibrary from 'component-library'; 

export default class Button extends React.Component { 
    constructor(props){ 
     super(props) 
    } 
    render() { 
     return (
      <StyledLibrary.Button {...this.props}></StyledLibrary.Button> 
     ) 
    } 
} 

おかげであなたはクラスのボタン名を変更することはできませんなぜすべて

関連する問題