【问题标题】:Creating a slideshow with an instagram feed使用 instagram 提要创建幻灯片
【发布时间】:2023-03-23 01:33:01
【问题描述】:

我正在尝试使用库instafeed.jsreact-slick 创建一个显示instagram 提要幻灯片的页面。许多消息来源写到使用jquery slick library 和 instafeed.js 从提要中轻松实现照片轮播的文章如下:

let imgFeed = new Instafeed({
  get: 'user',
  userId: '',
  clientId: '',
  accessToken: '',
  resolution: 'standard_resolution',
  template: '<img src="{{image}}" />',
  sortBy: 'most-recent',
  limit: 8,
  links: false,
  after: function () {
    $('#instafeed').slick({
      infinite: true,
      slidesToShow: 4,
      slidesToScroll: 4
    });
  }
})

您只需在 after() 函数中添加流畅的功能。

在查看 slick 库的 react-version 文档时,动态内容应该是这样的:

import React, { Component } from 'react'
import Slider from 'react-slick'

export default class DynamicSlides extends Component {
  constructor(props) {
    super(props)
    this.state = {
      slides: [1, 2, 3, 4, 5, 6]
    }
    this.click = this.click.bind(this)
  }
  click() {
    const {slides}  = this.state
    this.setState({
      slides: slides.length === 6 ? [1, 2, 3, 4, 5, 6, 7, 8, 9] : [1, 2, 3, 4, 5, 6]
    })
  }
  render() {
    const settings = {
      dots: true,
      infinite: true,
      speed: 500,
      slidesToShow: 3,
      slidesToScroll: 3
    };
    return (
      <div>
        <h2>Dynamic slides</h2>
        <button className='button' onClick={this.click}>Click to change slide count</button>
        <Slider {...settings}>
          {this.state.slides.map(function (slide) {
            return <div key={slide}><h3>{slide}</h3></div>
          })}
        </Slider>
      </div>
    );
  }
}

很多消息来源都在谈论使用这 2 个库制作 instagram-feed-carousel 是多么容易,但没有显示任何解决方案,所以我有点不知道如何做到这一点,因为我没有不知道如何将我的 instagram-feed 从 react-slick 动态添加到滑块组件中。

【问题讨论】:

    标签: reactjs carousel instafeedjs react-slick


    【解决方案1】:

    我不熟悉 instafeed.js,但如果您可以从 Instagram 的 API 获取原始数据,这应该适合您:

    import React from 'react'
    import Slider from 'react-slick'
    
    export default class InstagramCarousel extends React.Component {
      constructor(props) {
        super(props)
        this.state = {
          instagramData: this.props.instagramData
        }
      }
      render() {
        const settings = {
    
        }
    
        return (
          <Slider {...settings}>
            {this.state.instagramData.map((slide, index) => {
              return (
                <div key={index}>
                  <a href={slide.link} target="_blank">
                    <img src={slide.images.thumbnail.url} />
                  </a>
                </div>
              )
            })}
          </Slider>
        )
      }
    }
    

    如果你有访问令牌,你可以获得最近的 20 张照片,如下所示:

    import request from 'request'
    
    let url = 'https://api.instagram.com/v1/users/self/media/recent/?access_token='
    request.get(url + accessToken, function (err, res, body) {
                this.setState({ ...this.state, instagramData: JSON.parse(body).data })
            })
    

    然后像这样调用组件:

    <InstagramCarousel instagramData={this.state.instagramData} />
    

    【讨论】:

    • 谢谢!明天我会看看它,看看我是否可以让它工作。非常感谢!
    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 2011-11-24
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    相关资源
    最近更新 更多