"ControlLabel"未从"react-bootstrap"导出。

21

你好,我正在使用React创建登录表单。为了检查登录参数,我使用了react-bootstrap包的Checkbel。但是当我运行代码时,会抛出以下异常:./src/App.js Attempted import error: 'ControlLabel' is not exported from 'react-bootstrap'. 我该如何解决?

React 代码:

import React, { Component } from "react";
import { Form,Button, FormGroup, FormControl, ControlLabel } from "react-bootstrap";
import "./Login.css";
import Bootstrap from "react-bootstrap";

export default class Login extends Component {
  constructor(props) {
    super(props);

    this.state = {
      email: "",
      password: ""
    };
  }

  validateForm() {
    return this.state.email.length > 0 && this.state.password.length > 0;
  }

  handleChange = event => {
    this.setState({
      [event.target.id]: event.target.value
    });
  }

  handleSubmit = event => {
    event.preventDefault();
  }

  render() {
    return (
      <div className="Login">
        <form onSubmit={this.handleSubmit}>
          <FormGroup controlId="email" bsSize="large">
            <ControlLabel>Email</ControlLabel>
            <FormControl
              autoFocus
              type="email"
              value={this.state.email}
              onChange={this.handleChange}
            />
          </FormGroup>
          <FormGroup controlId="password" bsSize="large">
            <ControlLabel>Password</ControlLabel>
            <FormControl
              value={this.state.password}
              onChange={this.handleChange}
              type="password"
            />
          </FormGroup>
          <Button
            block
            bsSize="large"
            disabled={!this.validateForm()}
            type="submit"
          >
            Login
          </Button>
        </form>
      </div>
    );
  }
}

1
你的 react-bootstrap 版本是多少?这些组件在 0.28 中不存在。 - Kunal
@Kunal 我的版本是:1.0.0-beta.5 - riki
3
尝试使用FormLabel代替ControlLabel,因为这是React Bootstrap最新版本的新名称。 - mtyson
1
@mtyson,你的评论可能会成为一个被接受的答案。那个被接受的答案对我没用。 - Jan Jansz
4个回答

40

尝试使用 FormLabel 替代 ControlLabel。


这是最佳的方法! - Edgar Henriquez

10

<ControlLabel>是来自react-bootstrap的旧版本。当前版本("react-bootstrap":"^1.4.3")使用<FormLabel><Form.Label>


9
根据此链接https://react-bootstrap.github.io/components/buttons/#button-props和您的版本,您应该将代码修改为以下内容。
    import React, { Component } from "react";
    import Form from 'react-bootstrap/Form'
    import Button from 'react-bootstrap/Button'
    import Bootstrap from "react-bootstrap";

    export default class Login extends Component {
      constructor(props) {
        super(props);

        this.state = {
          email: "",
          password: ""
        };
      }

      validateForm() {
        return this.state.email.length > 0 && this.state.password.length > 0;
      }

      handleChange = event => {
        this.setState({
          [event.target.id]: event.target.value
        });
      }

      handleSubmit = event => {
        event.preventDefault();
      }

      render() {
        return (
          <div className="Login">
            <Form onSubmit={this.handleSubmit}>
              <Form.Group controlId="email" bsSize="large">
                <Form.Control
                  autoFocus
                  type="email"
                  value={this.state.email}
                  onChange={this.handleChange}
                />
              </Form.Group>
              <Form.Group controlId="password" bsSize="large">
                <Form.Control
                  value={this.state.password}
                  onChange={this.handleChange}
                  type="password"
                />
              </Form.Group>
              <Button
                block
                bsSize="large"
                disabled={!this.validateForm()}
                type="submit"
              >
                Login
              </Button>
            </Form>
          </div>
        );
      }
    }

7

这个"react-bootstrap": "^1.0.0-beta.16"不包含ControlLabel,所以请使用卸载它的方法:

   npm uninstall react-bootstrap

然后使用这个版本"react-bootstrap": "^0.32.4"重新安装

   npm install react-bootstrap@0.32.4 --save

一定会解决这个问题。


然后您需要从package.json中删除^,这样在部署时它将安装最新版本。 - Asgar Ali Khachay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接