我试图在Salesforce上使用ReactJS,但查询很成问题
看看这段代码,尝试制作一些很酷的东西来获取所有数据,但暂时不停止,不知道为什么,请帮助我,随时问我任何事情
componentWillMount(){
let queryMore = true
let offSet = 0
let contents = []
while(queryMore) {
makeDeferredProvider()
let contentObject = SObjectModel.deferredObject('Content')
let retrieveOptions = {
limit: 10,
where: {
Type__c: { eq: 'Image' }
}
}
offSet > 0 ? retrieveOptions.offset = offSet : ''
let contentPromise = contentObject.retrieve(retrieveOptions)
contentPromise.then( records => {
records.forEach( record => {
let item = {
'name': record.get('Name'),
'id': record.get('Id')
}
contents.push(item)
})
records.length = 10 ? offSet += 10 : queryMore = false
}, error => {
console.log(error)
})
}
this.setState({
contents: contents
})
}
答案 0 :(得分:0)
Async React将来会更容易,但是现在你需要在你的诺言解决时不阻止渲染。
这是一个高级解决方案:
考虑使用JSForce(https://jsforce.github.io/)连接到您的对象。它已经包含了autoFetch逻辑,可以替换你的queryMore逻辑。
*使用ComponentDidMount应该可以工作,但这可能是一个坏主意,因为组件将在每次渲染时调用SF。你可能应该使用一个处理程序,只有当你没有状态数据或者你想要因某些其他原因刷新时才会打电话。