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 的对象,而不是你想要的实际输入组件。
我的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 的对象,而不是你想要的实际输入组件。