我有一个HomePageContainers
,它保存AJAX请求的数据并传递给HomePage
组件。 HomePage
组件由支持滚动的高阶函数InfiniteScroll
组成。
InfiniteScroll
看起来像这样:
componentDidMount() {
window.addEventListener('scroll', this.onScroll.bind(this), false);
}
componentWillUnmount() {
window.removeEventListener('scroll', this.onScroll.bind(this), false);
}
onScroll() {
if ((window.innerHeight + window.scrollY) >= (document.body.offsetHeight - 200)) {
const { scrollFunc } = this.props;
scrollFunc();
}
}
我希望代码在触发一个代码时阻止滚动并等待数据从请求到达。类似的东西:
((window.innerHeight + window.scrollY) >= (document.body.offsetHeight - 200)) + //a new condition to make sure only scroll happens when data arrives or fails.
请注意,scrollFunc
将从HomePageContainers
收到,HomePageContainers
将根据AJAX请求/响应更新其状态。
我可以将InfiniteScroll
中的滚动状态存储为@Igorsvee,但我希望这些状态转到import os
import json
def _getjson(filename):
""" returns a list of dictionaries """
if not os.path.exists(filename): return []
with open(filename, 'r') as openfileobject:
data = json.loads(openfileobject.read())
return data
def writefile(filename, data):
"""writes to file"""
with open(filename, 'w') as f:
for d in data:
f.write(d['field1'] + ' ' + d['field2'] + ' ' + d['field3'] + '\n')
## a lot more code here
def main():
filename = r'c:\input.json'
data = _getjson(filename)
outfile = r'c:\output.txt'
writefile(outfile, data)
if __name__ == '__main__':
main()
组件,因为它负责处理滚动事件。
我将如何做?
答案 0 :(得分:1)
假设HomePageContainers
组件发出ajax请求,您可以向其状态添加一个新的isFetching
标志,并将其与scrollFunc
一起传递,以便您可以有条件地调用它: / p>
if(this.props.isFetching){
scrollFunc();
}
请求开始时{p> isFetching
应为true
,false
以成功或错误结束时为scrollFunc
。
或者你可以在if(this.state.isFetching){
...
}
本身内有条件逻辑:
substring_index()