0

我的班级如下:

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 没有用。

怎么了?

4

1 回答 1

2

您需要对 Input 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 得到的错误是一个典型的错误,实际上它不是一个反应组件。所以基本上你试图渲染包含所有组件的引导程序返回的对象,而不是你想要的实际输入组件。

于 2015-09-01T10:39:24.497 回答