1

我有一个页面,我最初需要显示 9 张卡片,点击显示更多我需要显示更多卡片,直到 API 调用有数据。我使用了切片方法,我能够实现同样的效果,但是由于切片 SEO 性能受到影响,这些 div 没有被谷歌抓取,所以现在的问题是我需要在页面上渲染所有 div 卡并且只需要显示9 用其他方法。我不知道如何实现这一目标。任何人都可以在反应中使用类组件来帮助我。

import React from 'react';
import WebinarList from './WebinarList';
import Webinars from './Webinars';

export default class WebinarData extends React.Component{
constructor(...props) {
    super(...props);
    this.state = {
       isVisible: 9,
       setFlag: true,
       totalValue:0
    };
    this.showmoreWebinar = this.showmoreWebinar.bind(this);
    this.mathCal = this.mathCal.bind(this);
    
}

  componentWillReceiveProps(nextProps) {
    const webinarList = this.props.webinarListInfo ? 
    this.props.webinarListInfo: null;
    const total =  webinarList? webinarList.length : 0;

    if(this.state.isVisible >= total){
        this.setState((old)=>{
            return {
                isVisible: 9,
            }
        })
    }
    
  }

  showmoreWebinar(offset, total){       
    this.setState((old)=>{
        return {
            isVisible: old.isVisible + offset,
        }
    })     
   }

   mathCal(n){
    if(n > 0)
        return Math.ceil(n/3.0) * 3;
    else if( n < 0)
        return Math.floor(n/3.0) * 3;
    else
        return 3;
   }

  render(){
  // console.log("in web");
  // console.log(this.props.webinarListInfo);
  const webinarList = this.props.webinarListInfo ? 
 this.props.webinarListInfo: null;
 const webinarBanner = this.props.webinarBanner && 
  this.props.webinarBanner.webinarLandingItems ? 
 this.props.webinarBanner.webinarLandingItems[0]: null;
 let offset = webinarBanner && webinarBanner.PageSize? 
 webinarBanner.PageSize : 9;
 offset= this.mathCal(offset);
const showMore = webinarBanner &&  webinarBanner.LoadMoreButtonText? 
 webinarBanner.LoadMoreButtonText: "Show more" ;
const list = webinarList ?  webinarList.map((item, index) => (
     <Webinars info={item} index={index} labelInfo= 
{this.props.webinarList}/>
    )
    ) : null;
const total =  webinarList? webinarList.length : 0;
return(
    <div>
        <div className="webinarData">
            <WebinarList labelInfo={this.props.webinarList} totalList= 
{webinarList}/>
            {list}           
        </div>
        <div className="l-show-more-btn">
        {webinarBanner ? (<button className="c-button showmore-webinar 
  is-desktop is-medium is-upper-case" 
                      style={{ display: this.state.isVisible >= total ? 
 'none' : 'block' }}
                onClick={() => this.showmoreWebinar(offset, total)} >
                {showMore}
            </button>) : null}
        </div>
     {total <= 0 ? (<div className=""><p  style={{textAlign:'center'}}> 
 {this.props.webinarList && this.props.webinarList.ResultNotFound? 
 this.props.webinarList.ResultNotFound: null}</p></div>):null}
    </div>
  );
  }
 }

现在我需要删除此切片方法,以便在页面加载时显示所有内容,然后需要对其进行切片(基本上在 UI 中显示和隐藏某种东西)。以下是它在 UI 中的结构:

在此处输入图像描述

4

0 回答 0