我正在寻找使用React实现无限滚动的方法.我遇到了react-infinite-scroll并发现它效率低,因为它只是向DOM添加节点而不删除它们.有没有经过验证的React解决方案,它将在DOM中添加,删除和维护恒定数量的节点.
这是jsfiddle问题.在这个问题中,我希望一次只有DOM中的50个元素.当用户向上和向下滚动时,应加载和删除其他内容.我们已经开始使用React,因为它的优化算法.现在我找不到解决这个问题的方法.我遇到过airbnb无限的js.但是它是用Jquery实现的.要使用这个airbnb无限滚动,我必须松开我不想做的React优化.
示例代码我想添加滚动是(这里我正在加载所有项目.我的目标是一次只加载50个项目)
/** @jsx React.DOM */
var Hello = React.createClass({
render: function() {
return (<li>Hello {this.props.name}</li>);
}
});
var HelloList = React.createClass({
getInitialState: function() {
var numbers = [];
for(var i=1;i<10000;i++){
numbers.push(i);
}
return {data:numbers};
},
render: function(){
var response = this.state.data.map(function(contact){
return (<Hello name="World"></Hello>);
});
return (<ul>{response}</ul>)
}
});
React.renderComponent(<HelloList/>, document.getElementById('content'));
Run Code Online (Sandbox Code Playgroud)
寻求帮助......
Dreamhost是小项目的好主人.它也是Django友好的托管.除了python和Django版本之外的一切都有点过时了.好吧,这是一整天的工作来弄清楚如何在dreamhost上更新Python 2.7.3,Django 1.4并且我真的想与找到它的人分享
我有一些window.onscroll事件
$(window).scroll(function(e){
//My Stuff
});
Run Code Online (Sandbox Code Playgroud)
但在我的代码中,我将动画滚动调用到某些地方
$('html, body').stop().animate({
scrollTop:555
}, 1000);
Run Code Online (Sandbox Code Playgroud)
所以我如何检测页面是由用户滚动或由我的代码调用.我当前的解决方案是animate在我的代码调用之前放置一个标志,然后清除它,但这不是一个聪明的解决方案.我也读过关于检测的信息e.which,e.originalEvent但它不起作用.我想你的专家在这里有一个很好的解决方案.
如果使用cloneElement(在现有元素实例上)或createElement(在react类上),哪一个在性能方面更好?
有时克隆某些东西比创建新实例更快.请告诉我.谢谢
为了支持旧的(遗留)数据库,我们必须创建一个使用整数字段作为用户表的外键的表:这就是我们的模型的样子:
class UserHistory():
user_id = models.IntegerField(null=True, blank=True)
# ..... (other fields) .....
Run Code Online (Sandbox Code Playgroud)
问题是用户表中可能存在也可能不存在用户 ID。有什么方法可以将该 user_id 字段视为用户 talbe 的外键(当它存在时)?所以我可以在 django admin 或其他地方显示,而不仅仅是 ID。
我目前有一个运行iis 7.5的Windows 2008网络服务器.我已成功为Python 2.7.4构建PyISAPIe 1.1.0.Django已经部署,它可以快速运行.但据我所知,PyISAPIe在某种程度上是老式的,最后一个版本是在2010年发布的.我发现有Helicon Zoo(WebPI打包运行WSGI桥)和DjangoWindowsTools(使用Fascgi自动部署).所以我想问你的建议:哪种解决方案最适合IIS上的django/python?
我有一个字符串和一个字典,我必须替换该文本中每个出现的dict键.
text = 'I have a smartphone and a Smart TV'
dict = {
'smartphone': 'toy',
'smart tv': 'junk'
}
Run Code Online (Sandbox Code Playgroud)
如果键中没有空格,我会将文本分成单词并逐个与dict进行比较.看起来像O(n).但是现在钥匙里面有空间,所以事情更加复杂.请建议我这样做的好方法,请注意密钥可能与文本不匹配.
更新
我已经想到了这个解决方案,但效率不高.O(m*n)或更多......
for k,v in dict.iteritems():
text = text.replace(k,v) #or regex...
Run Code Online (Sandbox Code Playgroud) 我必须实现以下层次结构数据:
Category (id, name, url)
SubCategory (id, name, url)
SubSubCategory (id, name, url)
Run Code Online (Sandbox Code Playgroud)
注意,这是多对多关系。EG:每个节点可以有多个父级或子级。没有流通关系(感谢上帝)。只有某些SubSubCategory可以属于多个SubCategory。
我的实现:为此,我使用单个表
Cat (id, type(category, subcategory, subsubcategory), name, url)
CatRelation (id, parent_id, child_id, pre_calculated_index for tree retrieval)
Run Code Online (Sandbox Code Playgroud)
pre_calculated_index可以左,右实施改性序树遍历的[1 ,2]或在我的实现的路径。这pre_calculated_index是在将子级添加到一个节点时计算出来的,这样,当您检索一棵树时,只需要按此字段排序即可,而不必进行递归查询。
无论如何,我的老板认为这种实现方式并不理想。他建议为每种类型的类别都拥有每个表,然后有一个数据透视表来链接它们:
Category (id, name, url)
SubCategory (id, name, url)
SubSubCategory (id, name, url)
Category_SubCategory(category_id, sub_category_id)
SubCategory_SubSubCategory(sub_category_id, sub_sub_category_id)
Run Code Online (Sandbox Code Playgroud)
检索树时,只需联接所有表。他的论据是,稍后将某些属性添加到不需要的任何类别类型时,在单表实现中将字段设为null。并且pre_calculated_index可能会出错,因为它是用代码计算的。
我应该跟随哪一个?哪个有更好的表现?
我使用django和postgreSQL。
PS:有关pre_calculated_index实现的更多详细信息:我在CatRelation中添加了一个路径(字符串,唯一,索引)值(而不是每个节点左右):根节点将具有“ path ='”。子节点添加到CatRelation后,将具有path = parent_path +'。因此,当您按此路径排序时,将按树顺序获得所有内容。例子:
Cat
| id | name | url |
|----|------------|-----|
| 1 | …Run Code Online (Sandbox Code Playgroud) 如何迭代所有Django设置?我需要阅读所有开头的设置MYAPP_.
我试过这样做:
from django.conf import settings
for setting in settings:
print setting
Run Code Online (Sandbox Code Playgroud)
...但我得到以下异常:
TypeError: 'LazySettings' object is not iterable
Run Code Online (Sandbox Code Playgroud)
有关如何实现这一目标的任何想法?
我注意到 Scala 中的这种行为
val list = List[(Int, Int)]()
val set = HashSet[(Int, Int)]()
scala> list :+ (1, 2)
res30: List[(Int, Int)] = List((1,2))
scala> list :+ (1 -> 2)
res31: List[(Int, Int)] = List((1,2))
scala> list :+ 1 -> 2
res32: List[(Int, Int)] = List((1,2))
//Work
// But the same for set not work
set += (1, 2)
<console>:14: error: type mismatch;
found : Int(2)
required: (Int, Int)
set += (1, 2)
//Ok may be += in set mean add …Run Code Online (Sandbox Code Playgroud) django ×5
python ×5
javascript ×3
reactjs ×2
algorithm ×1
clone ×1
database ×1
dictionary ×1
django-admin ×1
dreamhost ×1
html ×1
iis-7 ×1
jquery ×1
orm ×1
passenger ×1
postgresql ×1
replace ×1
scala ×1
textmatching ×1