如果您的template.html
文件只是 HTML 而不是 React 组件,那么您就不能像处理 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} />
);
}
});
不过,这与 React 的很多内容背道而驰。使用 JSX 将模板创建为 React 组件会更自然,而不是常规的 HTML 文件。
JSX 语法使表达结构化数据(如 HTML)变得非常容易,尤其是当您使用无状态函数组件时。
如果您的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>
);
};
然后你可以要求和使用它而无需字符串化。
var Template = require('./template');
module.exports = React.createClass({
render: function() {
var bar = 'baz';
return(
<Template foo={bar}/>
);
}
});
它保留了原始文件的所有结构,但利用 React 的 props 模型的灵活性并允许编译时语法检查,这与常规 HTML 文件不同。