2017-09-27 148 views
0

運行應用程序時我沒有得到,它只發生在我運行測試時。基本上我現在寫了快照測試。TypeError:無法讀取未定義的屬性'長度'

TypeError: Cannot read property 'length' of undefined at Papertype.render (src/components/layoutcomponents/papertype.js:50:23)

以下是在papertype.js

import React, { Component } from 'react'; 

import common from '../../jsons/common.json'; 

import catalogSpecs from '../../jsons/infiniti.json'; 


class Papertype extends Component { 

    constructor(props) { 

     super(props); 

     this.state = { 

      paperType: "Regular", 

      regularPaper : true, 

      heavyPaper : false 
     } 
    } 
    changePaperTypeLayoutParams(event){ 

     let nameSelection = event.target.value; 

     let lalala = catalogSpecs.commonProps.paperType.paperTypeDefinitionDTOs 

     let paperTypebinding = lalala[nameSelection].absolutelayflat; 

     let paperLaminationVisibility = lalala[nameSelection].paperLamination; 

     this.setState({ 

      paperType: nameSelection 

     }); 

     if(nameSelection.indexOf("Regular")>-1 || 

nameSelection.indexOf("Metallic")>-1){ 

      this.setState({ 

       regularPaper : true, 

       heavyPaper : false 
      }); 
      this.props.setRegularOrHeavy(true,false,paperTypebinding,paperLaminationVisibility); 

     }else{ 

      this.setState({ 

       heavyPaper : true, 

       regularPaper : false 

      }); 
      this.props.setRegularOrHeavy(false,true,paperTypebinding,paperLaminationVisibility); 
     } 



    } 
    render() { 

     let validLayoutPaperType=this.props.validLayoutPaperType; 

     let paperTypeOptions = []; 
     let paperTypeOpts = common.paperTypeOpts; 
     for(let i=0;i<validLayoutPaperType.length;i++){ 
      let paper = paperTypeOpts[validLayoutPaperType[i]] 
      paperTypeOptions.push(<option label={paper} value={paper} key={i}>{paper}</option>) 
     } 
     return(
      <div className="layout-item"> 
       <label>Paper Type</label> 
       <div className="custom-select"> 
        <select className="form-control" onChange={this.changePaperTypeLayoutParams.bind(this)}> 
         {paperTypeOptions} 
        </select> 
        <i className="icon icon-angle-down"></i> 
       </div> 
      </div> 
     ) 
    } 
} 
export default Papertype; 
+0

在渲染中嘗試'console.log(this.props.validLayoutPaperType)'。 – Andrew

回答

0

的誤差指的是你試圖獲得一個未定義的可變的長度代碼。

看來props對象沒有定義validLayoutPaperType。因此,您的本地validLayoutPaperType(位於render)未定義。

+0

console.log(this.props.validLayoutPaperType)給出一個數組 [0,1,2,3,4,5,6,7,8,9] –

+0

在render方法內部,還是在render方法之外?那是你在哪裏正確地把它扔到控制檯的地方? – jhenderson2099

+0

我打印裏面的渲染方法.. render(){ let validLayoutPaperType = this.props.validLayoutPaperType; console.log(this.props.validLayoutPaperType); let paperTypeOptions = []; let paperTypeOpts = common.paperTypeOpts; 爲(令i = 0; I {paper}) } –

相關問題