由于缺少this.setState导致页面加载错误

时间:2017-06-28 01:41:52

标签: reactjs

当我使用存储的数据填充表单时出现错误。我的表单包含一个数组,所以我使用{this.state.careerHistoryPositions.map((careerHistoryPosition)来创建一个循环。错误来自{careerHistoryPosition.errors['company']。当表单被提交时,表单的这一部分与errors相关,并且我不将其存储在数据库中,因此在填充表单时,不会设置错误。我认为这与this.setState寻找不存在的东西有关。

代码段:Constructor

constructor(props) {
    super(props);

    let uniqueId = moment().valueOf();
    const profileCandidateCollection = props.profileCandidate;
    const profileCandidateCollectionId = profileCandidateCollection._id;
    const careerHistoryPositions = profileCandidateCollection && profileCandidateCollection.careerHistoryPositions;

    this.state = {
      careerHistoryPositions: careerHistoryPositions || [
        {
          company: '',
          uniqueId: uniqueId,
          title: '',
          description: '',
          startDateMonth: '',
          startDateYear: '',
          startDateMonth: '',
          endDateYear: '',
          isCurrent: false,
          isDisabled: false,
          errors: {}
        }
      ],
      profileCandidateCollectionId: profileCandidateCollectionId || null
    };
  }

代码段:render

{this.state.careerHistoryPositions.map((careerHistoryPosition) => (
  <div key={careerHistoryPosition.uniqueId} className="individual-position">
    <SingleInput xs={9} inputType={'text'} controlFunc={this.handleCompanyNameChange(careerHistoryPosition.uniqueId)} content={careerHistoryPosition.company} placeholder={'Company'} bsSize={null}/> 
    {careerHistoryPosition.errors['company']
      ? <Col sm={12} className="has-error">
          <span className="help-block custom-error">{careerHistoryPosition.errors['company']}</span>
        </Col>
      : ''}
  </div>
))}

0 个答案:

没有答案