鍍金池/ 問答/HTML/ 在react項目里 ,如何優(yōu)化這段代碼?

在react項目里 ,如何優(yōu)化這段代碼?

renderFooter2 (quantity) {
        const _self = this;

        console.log('showPageNumber = ', _self.state.showPageNumber)

        let wordStyle = {
            color: 'rgba(71,129,255,1)'
        }

        let numberFrameCommon = {
            width: 38,
            height: 38,
            marginLeft: 10,
            cursor:'pointer'
        }

        let numberFrame = {
            ...numberFrameCommon,
            background: 'rgba(71, 129, 255, 1)',
            color: 'rgba(255, 255, 255, 1)',
        }

        let numberFrame2 = {
            ...numberFrameCommon,
            background: 'rgba(27, 29, 45, 1)',
            color:'rgba(99, 107, 138, 1)'
        }

        let ellipsisStyle = {
            ...numberFrameCommon,
            background: 'rgba(27, 29, 45, 1)',
            color:'rgba(99, 107, 138, 1)'
        }

        let data = [];

        for(let di=1; di<=_self.state.showPageNumber; di++) {
            data[di-1] = di;
        }

        return (

            data.map((item, index, arr) => {

                //console.log('item = ', item);
                //console.log('index = ', index);
                if(index === 0) {
                    return (<div
                        key = {index}
                        style = {
                            _self.state.currentClickPage === index?
                                numberFrame : numberFrame2
                        }
                        className={'numberFrame'}
                        onClick={() => this.showPageData(index)}
                    >
                        {index+1}
                    </div>)
                } else if( index === 1 ) {
                    return (<div
                        key = {index}
                        style = {ellipsisStyle}
                        className={'numberFrame'}
                    >
                        ...
                    </div>)
                } else if( index<_self.state.currentClickPage &&
                    _self.state.currentClickPage-index<4 ) {
                    return (<div
                        key = {index}
                        style = {
                            _self.state.currentClickPage === index?
                                numberFrame : numberFrame2
                        }
                        className={'numberFrame'}
                        onClick={() => this.showPageData(index)}
                    >
                        {index+1}
                    </div>)
                } else if ( index === _self.state.currentClickPage ) {
                    return (<div
                        key = {index}
                        style = {
                            _self.state.currentClickPage === index?
                            numberFrame : numberFrame2
                        }
                        className={'numberFrame'}
                        onClick={() => this.showPageData(index)}
                    >
                        {index+1}
                    </div>)
                } else if (index>_self.state.currentClickPage &&
                    index-_self.state.currentClickPage<5 ) {
                    return (<div
                        key = {index}
                        style = {
                            _self.state.currentClickPage === index?
                                numberFrame : numberFrame2
                        }
                        className={'numberFrame'}
                        onClick={() => this.showPageData(index)}
                    >
                        {index+1}
                    </div>)
                } else if (index-_self.state.currentClickPage === 5) {
                    return (<div
                        key = {index}
                        style = {ellipsisStyle}
                        className={'numberFrame'}
                    >
                        ...
                    </div>)
                } else if (index === _self.state.showPageNumber-1) {
                    return (<div
                        key = {index}
                        style = {
                            numberFrame2
                        }
                        className={'numberFrame'}
                        onClick={() => this.showPageData(index)}
                    >
                        { _self.state.showPageNumber}
                    </div>)
                }
            })
        )

    }
回答
編輯回答
毀與悔

這么詭異的代碼很久沒有看到了。建議你可以嘗試:

  1. 使用箭頭函數
  2. 不重新賦值的變量,用const
  3. switch case 代替 if else
  4. 使用classnames包
  5. 顏色,大小等可以提取成常量
  6. data的空數組,下面的循環(huán)不出錯嗎
  7. 變量的名稱語意化,盡量不要加2,3,4,5的后綴

編程規(guī)范的書籍建議你多閱讀一下。代碼還是要優(yōu)雅些,別人才愿意看。你要知道你寫的代碼不是自己看的。

2017年1月14日 06:57