我喜欢在 React 中做同构 JavaScript是多么容易。唯一困扰我的是它的工作原理是数据必须由浏览器下载两次。首先在 DOM 标记中,然后在 JSON 格式中以在运行时初始化状态。所有数据都已经存在于 DOM 中,难道 React 不应该仅凭这些数据就可以重新水化吗?
我已经做了一些实验,使用自定义绑定处理程序在 KnockoutJS 中进行渐进式增强。我希望有一种与 React 类似的方法。
//Custom binding to load the values into the view model from the DOM
ko.bindingHandlers.PE = {
init: function(element, valueAccessor, allBindings) {
var bindings = allBindings();
if (typeof bindings.text === 'function') {
bindings.text($(element).text());
}
}
};
更新
将逻辑放入从 DOM 读取值的 React 似乎并不习惯。但是没有什么能阻止您编写一些 JavaScript 来自己收集值!鉴于上面的示例,您可以执行以下操作。
var comments = $('.media').map(function() {
return {
Author: $(this).find('.media-object').attr('src'),
Text: $(this).find('.media-body').text()
};
});
然后使用它来初始化反应组件客户端。我对此很满意。