あなたtemplate.html
ファイルは単なるHTMLとはないが、コンポーネントを反応させるのであれば、あなたはJSファイルをどうするのと同じ方法でそれを必要とすることはできません。
ただし、Browserifyを使用している場合は、stringifyというトランスフォームがあり、非jsファイルを文字列として要求することができます。トランスフォームを追加すると、HTMLファイルを要求することができ、まるで文字列であるかのようにエクスポートされます。
HTMLファイルが必要になったら、dangerouslySetInnerHTML
propを使用してHTML文字列をコンポーネントに注入する必要があります。
var __html = require('./template.html');
var template = { __html: __html };
React.module.exports = React.createClass({
render: function() {
return(
<div dangerouslySetInnerHTML={template} />
);
}
});
これは、リアクションについての多くのことに反するものです。通常のHTMLファイルではなく、ReactコンポーネントとしてJSXを使用してテンプレートを作成する方が自然です。
JSX構文を使用すると、HTMLなどの構造化されたデータを簡単に表現できます(特に、stateless function componentsを使用した場合)。あなたのtemplate.html
ファイルがこの
<div class='foo'>
<h1>Hello</h1>
<p>Some paragraph text</p>
<button>Click</button>
</div>
のようなものを見た場合
次に、このように見えたJSXファイルに代わりにそれを変換することができます。
module.exports = function(props) {
return (
<div className='foo'>
<h1>Hello</h1>
<p>Some paragraph text</p>
<button>Click</button>
</div>
);
};
次に、stringifyを必要とせずに必要とすることができます。
var Template = require('./template');
module.exports = React.createClass({
render: function() {
var bar = 'baz';
return(
<Template foo={bar}/>
);
}
});
これは、元のファイルの構造のすべてを維持するが、リアクトの小道具モデルの柔軟性を活用し、通常のHTMLファイルとは異なり、コンパイル時の構文チェックが可能になります。
カスタムコンポーネントには大文字を使用する必要がありますので、 'template'を' Template'に変更してから '' – Icepickle
として返してください。 –
@Icepickle私はこのエラーを受け取ります:キャッチしていないエラー: "./template"モジュールを見つけることができません –