1

我正在尝试使用 react-slick 在我的项目中呈现多个项目的轮播,但是在映射我的 graphql 查询中的数据时遇到了问题。只有当我手动放置物品时,旋转木马才能很好地工作……但想法并非如此。

然后我把运行良好的代码:

------SliderCarousel.js------

  import React from 'react'

  import Slider from "react-slick"

  import { Grid } from '@material-ui/core';

  /** @jsx jsx */
  import { jsx, css } from '@emotion/core'

  const borde = css({
  borderStyle: 'solid',
  })

  const contenedorCarousel = css({

  padding:30,
  backgroundColor: '#39854A'
  })
  const itemCarousel = css({
 })

  const itemBody = css({
  marginLeft: 5,
  height: 136,
  width: 136,
  backgroundColor: 'white',
  borderRadius: 12
  })

  const titulo = css({
  paddingTop: 10
  })
  const SliderCarousel  = props =>{

  const settings = {
        dots: false,
        infinite: true,
        speed: 1100,
        slidesToShow: 6,
        slidesToScroll: 3,
        autoplay: true,
        autoplaySpeed: 8000
      }
  return (
        <div css={contenedorCarousel}>
              <Slider {...settings}>
                     <div css={itemCarousel}><div css={itemBody}>
                          <Grid container
                          direction="column"
                          justify="center"
                          alignItems="center">
                                <Grid item css={titulo}>1</Grid>
                                <Grid item css={[{
                                backgroundImage:  
                           `url('${require('../../images/productos/
                            5c89b2b19268c22ab85a24c5.png')}')`,
                                backgroundSize: 'contain',
                                backgroundRepeat: 'no-repeat',
                                height: 90,
                                width: 90,}]}></Grid>
                          </Grid>
                          </div></div>
                          <div css={itemCarousel}><div css={itemBody}>
                          <Grid container
                          direction="column"
                          justify="center"
                          alignItems="center">
                                <Grid item css={titulo}>2</Grid>
                                <Grid item css={[{
                                backgroundImage:  
                               `url('${require('../../images/productos/
                                5c89b2b19268c22ab85a24c5.png')}')`,
                                backgroundSize: 'contain',
                                backgroundRepeat: 'no-repeat',
                                height: 90,
                                width: 90,}]}></Grid>
                          </Grid>
                    </div></div>
                    </Slider>
                   </div>

                    )


                    }
                   export default SliderCarousel

----下面的代码显示了水平方向的项目,并且在视觉上不起作用。我认为这是渲染通过graphql来的元素时出现的问题。

import React from 'react'
import ItemCarrousel from '../Productos/ItemCarrousel'
import Slider from "react-slick"
import { Query } from "react-apollo"
import gql from "graphql-tag";
import { Grid } from '@material-ui/core';

/** @jsx jsx */
import { jsx, css } from '@emotion/core'

 const borde = css({
  borderStyle: 'solid',
 })

const contenedorCarousel = css({

  padding:30,
  backgroundColor: '#39854A'
})
const itemCarousel = css({


 })

  const itemBody = css({
  marginLeft: 5,
  height: 136,
  width: 136,
  backgroundColor: 'white',
  borderRadius: 12
 })

  const titulo = css({
  paddingTop: 10
  })


   export const PRODUCTOS = gql`
   query productos{
    products{
    _id
    title
   price

   }
  }

 `;
 const SliderCarousel  = props =>{

  const settings = {
        dots: false,
        infinite: true,
        speed: 1100,
        slidesToShow: 6,
        slidesToScroll: 3,
        autoplay: true,
        autoplaySpeed: 8000
      }
  return (
        <div css={contenedorCarousel}>
              <Slider {...settings}>

                    <Query query={PRODUCTOS}>
                    {({loading,error,data})=>{
                          if (loading) return "Loading...."
                          if (error) return `Error!: ${error}`
                          console.log(data)
                         return data.products.map((product, key) => <div css= 
                         {itemCarousel}>
                         <div css={itemBody}>
                          <Grid container
                          direction="column"
                          justify="center"
                          alignItems="center">
                                <Grid item css={titulo}>{product.title}</Grid>
                                <Grid item css={[{
                                backgroundImage:  
                        `url('${require('../../images/productos/
                         5c89b2b19268c22ab85a24c5.png')}')`,
                                backgroundSize: 'contain',
                                backgroundRepeat: 'no-repeat',
                                height: 90,
                                width: 90,}]}></Grid>
                          </Grid>
                          </div>
                    </div>
                          )               
                    }}  
                    </Query>
                    </Slider>
        </div>

           )


            }
           export default SliderCarousel
4

0 回答 0