我试着用Javascript设计模式来学习以改善我的练习,但我只是混淆了所有那些模式特别我发现在facebook脚本(学习)中使用的风格很简单,如果很容易使用,如果我非常了解这些设计模式,所以我想问一下这里的所有专家关于facebook与Javascript库一起使用的模式(反应js)如下代码
__d('StaticUFI.react',
['getElementPosition', 'getElementRect', 'getUnboundedScrollPosition',
'shallowEqual', 'throttle'],
function a(b, c, d, e, f, g, h, i) {
'use strict';
var j = c('UFIConstants').UFIFeedbackSourceType,
k = c('UFIConstants').UFIStatus,
l = c('React').PropTypes,
m = c('React').createElement('div', {className: "UFICommentsLoadingSpinnerContainer _48pi UFIRow"},
c('React').createElement(c('XUISpinner.react'), {size: 'large'})),
n = c('React').createElement('div', {
className: "_xtv",
role: 'presentation'
}, c('React').createElement('i', null)), o = c('React').createClass({
displayName: 'StaticUFI',
contextTypes: {dispatch: l.func},
getInitialState: function () {
var p = this.props.focusReply;
return {focusReply: p, viewerHasClickedCommentComposer: false, viewerHasClickedSeeMore: false};
},
getDefaultProps: function () {
return {
commentIDToFocusOnMount: null,
focusReply: null,
canReplyMap: {},
isActiveLoading: {},
repliesExpandedMap: {},
hasPagedToplevel: false,
viewerHasInteractedWithComments: false,
loadingSpamIDs: {}
};
},
componentDidMount: function () {
c('Arbiter').inform('UFI/displayDone-' + this.props.contextArgs.instanceid);
if (this.props.feedback.isqanda && this.props.feedback.infinitescroll) {
var p = c('throttle')(this.loadMoreComments, 20);
this._scrollEventListener = c('Event').listen(window, 'scroll', p);
this._resizeEventListener = c('Event').listen(window, 'resize', p);
}
if (c('BlueBar').hasFixedBlueBar())this.setState({oldBoundingClientRect: c('getElementRect')(c('ReactDOM').findDOMNode(this))});
this._resolveFocus();
},
loadMoreComments: function () {
if (this.isMounted() && this.refs.topLevelBottomPager && !(this.props.contextArgs.ftentidentifier in this.props.isActiveLoading)) {
var p = c('ReactDOM').findDOMNode(this.refs.topLevelBottomPager),
q = c('getUnboundedScrollPosition')(window).y,
r = q + document.documentElement.clientHeight + c('UFIConstants').infiniteScrollRangeForQANDAPermalinks;
if (p.offsetHeight && p.offsetTop < r)this.refs.topLevelBottomPager.props.onPagerClick();
}
}
});
f.exports = o;
}, null);