React bootstrap - Uncaught TypeError: Cannot read property 'toUpperCase' of undefined

React bootstrap - Uncaught TypeError: Cannot read property 'toUpperCase' of undefined

我的class如下:

import React from 'react';
import Input from 'react-bootstrap';
    export default class FormWidget1 extends React.Component {
        render() {    
            if (!this.props.fields) {
                console.log('no fields passed');
            }
            else {
                console.log(this.props.fields.length);
                console.log(this.props.fields);
            }

            var formFieldList = this.props.fields.map(function(field) {
                console.log("iterating");
                return (
                    <Input type="text" placeholder="testing" label="label" />
                );
            });
            return (
                <div>
                    <form action="">
                        {formFieldList}
                    </form>

                </div>
            );
        }
    }

如果我用 <input /> 替换 <Input /> 那么就没有错误。

堆栈跟踪仅显示我的 app.jsx,这没有用。

怎么了?

您需要解构输入 jsx 组件的导入。

import {Input} from 'react-bootstrap';

这样做是渲染到 var Input = require('react-bootstrap').Input; 而你之前的渲染是 var Input = require('react-bootstrap');

它在 React Bootstrap 的文档中确实提到了这一点:

https://react-bootstrap.github.io/getting-started.html#es6

编辑:一个很好的提示是,当您尝试呈现为组件时,您从 React 得到的错误是一个典型的错误,实际上不是 React 组件。所以基本上你试图渲染包含所有组件的反应 bootstrap returns 的对象,而不是你想要的实际输入组件。