【发布时间】:2019-10-04 17:36:25
【问题描述】:
我正在使用 React 地图在我网页上的 facebook 提要中呈现一些幻灯片。下面的函数获取我从 Facebook Graph API 收集的数据,并将它们呈现为我页面上 react-slick 滑块的幻灯片。
第一张幻灯片应该始终是我的组件,然后其他幻灯片应该是带有图像和文本的幻灯片。我通过说如果 index=0 然后渲染组件来做到这一点。
它工作正常,但最近它坏了,我发现这是因为有时第一张幻灯片的索引为 1,而不是 0。我不知道为什么会这样,第一张幻灯片不应该总是有索引为 0?
renderSlides () {
const { posts } = this.state
const postsAvailable = posts.length > 0
if (!postsAvailable) return null
return posts.map((post, index) => {
if (!post.message) return null
return (
<div key={post.id} ref={slider => (this.slider = slider)}>
{index === 0 && <SliderItem />}
{index >= 1 && (
<div className='item'>
<img
data-fb={post.full_picture}
/>
<div className={`item-content slide-${post.id}`}>
<p className='text'>{post.message}</p>
</div>
</div>
)}
</div>
)
})
}
编辑
这是我从 facebook 获取帖子数据的方式
downloadFBAPI () {
window.fbAsyncInit = function () {
FB.init({
appId: appID,
cookie: true,
xfbml: true,
version: 'v3.2'
})
}.bind(this);
(function (d, s, id) {
var js
var fjs = d.getElementsByTagName(s)[0]
if (d.getElementById(id)) return
js = d.createElement(s); js.id = id
js.src = '//connect.facebook.net/en_US/sdk.js'
fjs.parentNode.insertBefore(js, fjs)
}(document, 'script', 'facebook-jssdk'))
SuperAgent
.get('APIcall')
.accept('application/json')
.use(legacyIESupport)
.end(this.getData)
}
getData (err, res) {
if (err || !res || !res.body) {
this.setState({
isLoaded: true,
err
})
return err
} else {
const result = res.body.data
this.setState({
isLoaded: true,
posts: result
})
}
}
【问题讨论】:
-
粘贴您的帖子对象。
标签: javascript reactjs facebook-graph-api