【发布时间】:2016-06-26 13:15:10
【问题描述】:
假设我有一个简单的反应组件:
import React from 'react';
import styles from "./index.css";
export default React.createClass({
render: function() {
return (
<header className={styles.root}>
// area for child content
{this.props.children}
</header>
);
}
});
现在让我们说,我想要两个,而不是任何子组件的一个区域,就像这样:
import React from 'react';
import styles from "./index.css";
export default React.createClass({
render: function() {
return (
<header className={styles.root}>
<div className={styles.logo}>
// logo children here
</div>
<div>
// navigation children here
</div>
</header>
);
}
});
我知道我可以使用属性,但是对于大量的 html 内容来说这不是很优雅。如何以类似于 swig 中的named blocks 的方式做出反应?
命名块示例:
{% extends 'layout.html' %}
{% block title %}My Page{% endblock %}
{% block head %}
{% parent %}
<link rel="stylesheet" href="custom.css">
{% endblock %}
{% block content %}
<p>This is just an awesome page.</p>
{% endblock %}
您会看到这些块可以通过引用它们的名称来使用,从而允许“产生”多个内容区域。我希望有一种类似优雅的方式来做出反应,因为它使组件非常可组合。
【问题讨论】:
-
当你说“我知道我可以使用属性”时——你的意思是道具吗?为什么不优雅呢?
-
是的,标签
<ReactComponent property="a large amount of html here wouldn't be very maintainable" />中定义的属性。 -
您的命名块示例看起来像 Django,而不是 swig?
标签: javascript reactjs