Не пойманный (в обещании) Ошибка типа: Не удается прочитать свойства неопределенного (чтение «в верхнем регистре»)

#reactjs #jsx #react-bootstrap

Вопрос:

Я пытаюсь реализовать панель в React с помощью React-Bootstrap

Все идет нормально, пока я не добавлю тег. Panel.Body

Затем я получаю эту ошибку

bundle.js?1.3.9:115023 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'toUpperCase')

найдите questionnaire_list() функцию

     import React, { Component, PropTypes } from 'react';
    var PureRenderMixin = require('react/addons').addons.PureRenderMixin;
    import { sortColumn } from 'reactabular';
    import MsgActions from '../../../shared/actions/MsgActions';
    import SettingsStore from '../../../shared/stores/SettingsStore';
    import CustomizationActions from '../../../shared/actions/CustomizationActions';
    import CustomizationStore from '../../../shared/stores/CustomizationStore';
    import util from '../../../util/MelaUtil';
    import Grid from '../../../dumb/Grid.react';
    import {Row, Col, Table, Modal} from 'react-bootstrap';
    import Can from '../../../shared/constants/Can';
    import AppStore from '../../../shared/stores/AppStore';
    import P from '../../../shared/constants/Can';
    import _ from 'lodash';
    var Alert = require('react-bootstrap').Alert;
    var ListGroup = require('react-bootstrap').ListGroup;
    var Panel = require('react-bootstrap').Panel;
    var ListGroupItem = require('react-bootstrap').ListGroupItem;
    var Button = require('react-bootstrap').Button;
    var Glyphicon = require('react-bootstrap').Glyphicon;
    var PanelGroup = require('react-bootstrap').PanelGroup


class Questionnaires extends Component {
        constructor(props) {
            super(props);
            this.state = {
                questionnaires      : CustomizationActions.getAllQuestionnaires(),
                key                 : null,
            };
            // this._handleClick = this._handleClick.bind(this);
            this._onChange = this._onChange.bind(this);
            this._getAllQuestionnaires = this._getAllQuestionnaires.bind(this);
        }
    
        /**
         * LISTENING TO CHANGES FROM STORE
         */
        componentDidMount() {
            CustomizationStore.addChangeListener(this._onChange);
            MsgActions.setVeil(null);
        }
    
        componentWillUnmount() {
            CustomizationStore.removeChangeListener(this._onChange);
        }
    
        _onChange() {
            let questionnaires = CustomizationStore.getQuestionnaires();
            this.setState({questionnaires});
        }
    
        _getAllQuestionnaires(){
            let questionnaires = CustomizationActions.getAllQuestionnaires();
            this.setState({questionnaires});
        }
    
    
        questionnaire_list(){
            
            return (
                this.state.questionnaires.map((row, index) => {
    
                    let PanelState = {};
                    let panelName = `panel-${row.id}`;
                    PanelState[panelName] = !this.state[panelName];
    
                    return (
                        <div key={`item-${row.id}`}>
                            <ListGroupItem className={this.state.key} onClick={ ()=>this.setState(PanelState) }>{row.description}</ListGroupItem>
                            <Panel className="groups-items-panel" expanded={this.state[panelName]}>
                                


                                <Panel.Body collapsible>  <=====    HERE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                                    <ListGroupItem >Apple</ListGroupItem>
                                    <ListGroupItem >Pear</ListGroupItem>
                                </Panel.Body>
                            </Panel>
                        </div>
                    )
                })
            );
        }
    
    
    
    
        /****************************************************/
        render() {
            const spacer = {lineHeight: '5px'};
            const prefs = SettingsStore.getPreferences();
            let disabled = !AppStore.can(P.PATIENT_EDIT);
            return (
                <div className="col-lg-8 col-lg-offset-2 col-xs-12 col-xs-offset-0" style={{marginTop: 25}}>
    
                    <div className="demographicsTab">
                        <Row className="content-main oddContainer">
                            <Col>
                                <div className="panel panel_form">
                                    <div className="panel-heading">
                                        <h3>Questionnaire Customisation</h3>
                                    </div>
                                    <div className="panel-body">
    
                                        <Row>
                                            <Col xs={12}>
                                                <div className="content-main row">
                                                    <div className="col-xs-12">
                                                        <Button disabled={disabled} onClick={(e)=>{this._openAddOPCS();util.stopEvent(e);}}>
                                                            New
                                                        </Button>
                                                        <Button disabled={disabled} onClick={(e)=>{this._getAllQuestionnaires();util.stopEvent(e);}}>
                                                            All
                                                        </Button>
                                                    </div>
                                                </div>
                                            </Col>
                                        </Row>
    
                                        <Row style={spacer}><Col xs={12}>amp;nbsp;</Col></Row>
    
                                        <Row style={{marginBottom: '30px'}}>
                                            <Col xs={12}>
                                                <div className="content-main row">
                                                    <div className="col-xs-12">
                                                        {(!_.isEmpty(this.state.questionnaires)) ? this.questionnaire_list() : null}
                                                    </div>
                                                </div>
                                            </Col>
                                        </Row>
    
                                    </div>
                                </div>
                            </Col>
                        </Row>
                    </div>
    
                </div>
            );
        }
    }
    
    module.exports = Questionnaires;
 

Комментарии:

1. Что это за версия react-bootstrap? Панель, похоже, не существует в текущих версиях.

2. Я вынужден использовать react 0.13 и react-начальная загрузка на 0.23.7 — пока не могу найти документацию для этой версии.

3. Это, вероятно, лучшее, что вы получите для документов: github.com/react-bootstrap/react-bootstrap/blob/v0.23.7/src/…

4. У вас есть способ использовать исходные карты, чтобы сузить это до чего-то более конкретного?

5. Интересно, есть ли устаревшая библиотека для подобных вещей. В любом случае, спасибо. ценю это.