看着 React.js中的虚拟DOM 通过一些性能测试,我对这个库非常感兴趣。它似乎是Backbone令人敬畏的模型,路由器和集合结构的完美附加组件。
但是,由于缺乏高质量的教程和课程,我留下了一些问题,希望有人能够回答:
HTML模板
React是否完全废除了HTML模板的概念?我正在谈论将视图标记放在一个单独的HTML文件中(或者在一个单独的HTML文件中) <script type=text/template>
标签)。你知道,就像你使用underscore.js Handlebars等...
该 入门套件示例 所有人似乎都有JSX或 React.DOM
在你的视图类中运行,这对我来说似乎有些混乱,我可以看到这有点失控,因为你的观点变得复杂。
这是一个使用带有嵌套表的基本Twitter Bootstrap面板元素呈现2个值及其总和的示例。
var CustomView = React.createClass({
render: function() {
var x = this.props.x;
var y = this.props.y;
return (
<div className="panel panel-primary">
<div className="panel-heading">
<h1 className="panel-title">Should I put all this markup somewhere else?</h1>
</div>
<div className="panel-body">
<table className="table">
<thead>
<tr>
<th>X</th>
<th>Y</th>
<th>Combined val</th>
</tr>
</thead>
<tbody>
<tr>
<td>{x}</td>
<td>{y}</td>
<td>{x + y}</td>
</tr>
</tbody>
</table>
</div>
</div>
);
}
});
我不想知道是否可以将这些东西移到一个单独的文件中,而是,我试图理解在使用React时最好的做法是什么。
更新和设置数据
该 为什么要反应页面 声明如下:
只需表达您的应用程序在任何给定时间点应该如何查看,并且当您的基础数据发生变化时,React将自动管理所有UI更新。
我不完全理解这是如何工作的。例如,从之前获取React组件 <CustomView x="20" y="10">
。最初我会像这样呈现它:
var x = 20;
var y = 10;
React.renderComponent(
<CustomView x={x} y={y} />,
document.getElementById('view-container')
);
现在,当我想随时更新CustomView时 x
变化,我该怎么办? React应该是您在Angular和Ember中找到的数据绑定的替代方法,而不进行双向绑定,那么我该如何实现呢?我怎么说 CustomView
要密切关注 x
并在它发生变化时自动重新渲染?
当然,只需为x分配一个新值就什么都不做。
我知道有 setState
方法,但我仍然需要手动调用,对吧?因此,如果我使用React视图和Backbone模型,代码可能如下所示:
// Data model: Backbone.js
var model = new Backbone.Model({text: "Please help! :)"});
// Create view class
var View = React.CreateClass({
render: function() {
return (
<p>{this.props.text}</p>
);
}
});
// Instantiate new view
var view = React.renderComponent(
<View text={model.get("text")}>,
document.getElementById('view-container')
);
// Update view
model.on("change:text", function(model, newValue) {
view.setState({
text: newValue
});
});
// Change data
model.set("text", "I do not understand this ...");
这似乎是一个非常奇怪的设置,我几乎可以肯定这不是你应该这样做的方式。
我想要一些指示来帮助我在这里朝着正确的方向前进。
提前感谢您提供任何反馈和帮助。