我正在重写我的应用程序以使用Flux,我在从商店检索数据时遇到问题.我有很多组件,它们很多.其中一些是大(Article),一些是小而简单(UserAvatar,UserLink).
我一直在努力应对组件层次结构中应该从Stores读取数据的地方.
我尝试了两种极端的方法,我都不喜欢这两种方法:
需要来自Store的某些数据的每个组件只接收实体ID并自行检索实体.
例如,Article传递articleId,UserAvatar并UserLink传递userId.
这种方法有几个明显的缺点(在代码示例下讨论).
var Article = React.createClass({
mixins: [createStoreMixin(ArticleStore)],
propTypes: {
articleId: PropTypes.number.isRequired
},
getStateFromStores() {
return {
article: ArticleStore.get(this.props.articleId);
}
},
render() {
var article = this.state.article,
userId = article.userId;
return (
<div>
<UserLink userId={userId}>
<UserAvatar userId={userId} />
</UserLink>
<h1>{article.title}</h1>
<p>{article.text}</p>
<p>Read more by <UserLink userId={userId} />.</p>
</div>
)
}
});
var UserAvatar = React.createClass({
mixins: [createStoreMixin(UserStore)],
propTypes: { …Run Code Online (Sandbox Code Playgroud) 我在iframe中有一个pdf文件.我希望用户在提交表单之前滚动必须在pdf文件中.我正在尝试这个,
var position = $('#myIframe').contents().scrollTop();
Run Code Online (Sandbox Code Playgroud)
但不行.请帮助我提前谢谢.
看看这个TypeScript代码:
class Greeter {
greet() {}
}
Run Code Online (Sandbox Code Playgroud)
它围绕构造函数和所有原型函数声明生成一个IIFE(立即调用的函数表达式),如:
var Greeter = (function () {
function Greeter() {
}
Greeter.prototype.greet = function () { };
return Greeter;
}());
Run Code Online (Sandbox Code Playgroud)
这有什么好处?当我读到IIFE时,我发现定义模块有很多用处.据我所知,Typescript不会在IIFE中生成会污染全局命名空间的任何内容.
在我看来,这个类宣言没有任何优势:
var Greeter = function () {}
Greeter.prototype.greet = function () { };
Run Code Online (Sandbox Code Playgroud)
它是什么原因?