有没有像JSX'部分'
is there such a thing as JSX 'partials'?
我现在主要使用Handlebars JS,但我正在研究JSX。是否存在与Handlebars部分等价的JSX?我想知道我是否可以创建一些小的标记,以便在几个不同的JSX视图中重用。
它不提供分部。React:的一些内容
- React没有提供任何偏袒的概念。React的基本原子单位是组件
- 您应该创建一个或多个组件并重用它们,而不是传递一个分部。甚至比分部更好,因为它是一个函数,所以它被封装为和可测试
- 如果标记很小,它可能应该向上移动到父组件中,或者向下移动到更简单的组件中
一般来说,我的经验法则是,组件应该遵循单一责任或关注点分离的原则。如果某个组件似乎不适合某个组件,那么其他两个组件可能存在问题,也可以重新考虑:)
考虑组件时要遵循的另一条经验法则:
- 代码气味通常应该以组件的形式结束(一遍又一遍地重复一些东西,等等)
- 组件通常是表示的或容器化的。后者在应用程序的道具/状态树中具有角色(你永远不会"看到它们")
- 根据需要将事物重构为组件;不要一开始就封装所有东西,因为你可能过早地进行了重构,给自己带来了更多的问题
- 最可重用和解耦的组件就像最好的函数或对象:干净、灵活、可测试,它们确实解决了一个问题
-
同时,不要疯狂地将所有都变成一个组件。即你(通常)不想要:
<Letter>R</Letter><Letter>e</Letter><Letter>a</Letter><Letter>c</Letter><Letter>t</Letter>
这里有一个非常简单的例子:
'use strict';
const OuterComponent = React.createClass({
render() {
return (
<div>Outer{this.props.children}</div>
);
}
});
const ReusableComponent = React.createClass({
render() {
return (
<div>Am I reusable? {this.props.reusable && 'Yeah!' }</div>
);
}
});
ReactDOM.render(
<OuterComponent>
<ReusableComponent reusable={true}/>
</OuterComponent>,
document.getElementById('container')
);
将呈现:
OuterComponent
Am I reusable? Yeah!
不过,请注意,如果您不使用可变状态(通过this.state
在组件中提供),使用creatClass
可以为您提供比您可能需要的更多的功能,您可以轻松地使用有时被称为"无状态功能组件"的组件(因为它们是无状态的,由函数返回)。这些可以很容易地成为隐式返回JSX(本质上只是React.createElement()
生成器)的箭头函数
const OuterComponent = (props) => <div>Outer{this.props.children}</div>;
const ReusableComponent = (props) => <div>Am I reusable? {this.props.reusable && 'Yeah!' }</div>;
ReactDOM.render(
<OuterComponent>
<ReusableComponent reusable={true}/>
</OuterComponent>,
document.getElementById('container')
);
只需为此创建一个组件。组件可以是简单的,也可以是复杂的
示例:
function Badge(props) {
return <span className="badge">{props.counter}</span>
}
有了相应的.badge
CSS类,这可以是一个非常简单的组件,它可以渲染为带有数字的红色圆圈,并用作<Badge counter={42} />
。
相关文章:
- 如何播放部分音频文件
- 使用php或javascript从facebook相册URL中删除多余的部分
- jQuery匹配JSON对象的部分文本
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 如何在Javascript中解析AJAX数组的特定部分
- 将当前时间添加到我的页面上的特定部分
- JavaScript的额外材料:理解奇怪的部分
- Meteor JS中代码的重复使用部分
- Fullpage.js-视频+背景在同一部分
- 如何检测负责网站某些部分的JavaScript根文件
- AngularJS指令部分应用的函数don'不起作用
- 如何在MVC5中ajax调用的部分视图中引用外部javascript
- 返回Javascript中字符串的特定部分
- 我什么时候应该把JSON分成更小的部分
- 单击一次后禁用按钮-第2部分
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- Javascript的某些部分在Chrome中不起作用,但在其他浏览器中可以完美工作
- 在 React JSX 中有条件地呈现组件部分
- 有没有像JSX'部分'
- 如何将JSX部分与呈现函数分离