Typescript: TSX:変数に格納されているコンポーネントを使用できません

作成日 2016年01月12日  ·  3コメント  ·  ソース: microsoft/TypeScript

再現

MyComponentというコンポーネントがあるとします。

このようにMyComponentように機能します。

render() {
  return <MyComponent />;
}

ただし、 MyComponentを変数に格納してから使用しようとしても、次のことは行われません。

render() {
  var anAlias = MyComponent;
  return <anAlias />;
}

次のエラーが発生します。

error TS2339: Property 'anAlias' does not exist on type 'JSX.IntrinsicElements'.

回避策

TSXを使用する代わりに、 React.createElement使用します。

render() {
  var anAlias = MyComponent;
  return React.createElement(anAlias);
}
By Design

最も参考になるコメント

anAliasは、小文字で始まるため、固有のJSX要素です。 組み込み要素はJSX.IntrinsicElementsインターフェースで検索され、あなたの場合、おそらくメンバーanAliasがありません。 値ベースの要素として扱われるように、大文字にしてみてください。

全てのコメント3件

anAliasは、小文字で始まるため、固有のJSX要素です。 組み込み要素はJSX.IntrinsicElementsインターフェースで検索され、あなたの場合、おそらくメンバーanAliasがありません。 値ベースの要素として扱われるように、大文字にしてみてください。

Vladはそれをカバーしました-これは通常のJSXトランスフォーマーで見られるのと同じ動作です(小文字の識別子はdivまたはspanと同じように扱われます)

ありがとう。 固有の要素と値ベースの要素の違いを認識していなかったし、最初の文字の大文字と小文字が重要であることも知りませんでした。

このページは役に立ちましたか?
0 / 5 - 0 評価