【问题标题】:React-Bootstrap Horizontal Form not workingReact-Bootstrap 水平表单不起作用
【发布时间】:2017-10-26 15:03:00
【问题描述】:

我正在尝试使用 react-bootstrap 创建表单,但无法弄清楚如何使用水平表单布局。下面是我的 signin.js 代码。

import React, {Component} from 'react';
import {reduxForm} from 'redux-form';
import {Form, FormGroup, FormControl, ControlLabel, Col, Button} from 'react-bootstrap';

class Signin extends Component{
    handleFormSubmit({username,password}){
        console.log(username,password);
    }
    render(){
        const {handleSubmit, fields: {username,password}}=this.props;
        return(
            <Form horizontal className="col-sm-6 offset-sm-3" onSubmit={handleSubmit(this.handleFormSubmit.bind(this))}>
                <FormGroup>
                    <Col componentClass={ControlLabel} sm={2}>
                        Username:
                    </Col>
                    <Col sm={10}>
                        <FormControl {...username} type="text" />
                    </Col>
                </FormGroup>
                <FormGroup>
                    <Col componentClass={ControlLabel} sm={2}>
                        Password:
                    </Col>
                    <Col sm={10}>
                        <FormControl {...password} type="password" />
                    </Col>
                </FormGroup>
                <FormGroup>
                    <Col>
                        <Button type="submit">Submit</Button>
                    </Col>
                </FormGroup>
            </Form>
        );
    }
}

export default reduxForm({
    form: 'signin',
    fields: ['username','password']
})(Signin);

这是它在 app.js 中的呈现方式:

import React, {Component} from 'react';
import {Route} from 'react-router-dom';
import Signin from '../auth/signin';

export default class App extends Component{
    render(){
        return(
            <div>
                <Route exact path="/signin" component={Signin} />
            </div>
        );
    }
}

This is how it renders onto the page 我希望两个标签都与文本字段内联。我已经多次查看 react-bootstrap 文档。我已将他们的水平表单示例代码复制并粘贴到我的代码中,它仍然呈现类似于上图的效果。任何帮助将不胜感激。谢谢!

编辑:

这个问题是由于在我的 html 中链接到 v4 的 bootstrap 引起的,链接到 v3 修复了它。

【问题讨论】:

    标签: javascript reactjs react-bootstrap


    【解决方案1】:

    您的实现不起作用的原因是因为 Bootstrap 使用了 Flex。您必须将表单元素包装成一行。

    <Form horizontal className="col-sm-6 offset-sm-3" onSubmit={handleSubmit(this.handleFormSubmit.bind(this))}>
                    <FormGroup>
                        <Form.Row>
    <Col componentClass={ControlLabel} sm={2}>
                            Username:
                        </Col>
                        <Col sm={10}>
                            <FormControl {...username} type="text" />
                        </Col>
    </Form.Row
                    </FormGroup>
                    <FormGroup>
    <Form.Row>
                        <Col componentClass={ControlLabel} sm={2}>
                            Password:
                        </Col>
                        <Col sm={10}>
                            <FormControl {...password} type="password" />
                        </Col>
    </Form.Row>
                    </FormGroup>
                    <FormGroup>
                        <Col>
                            <Button type="submit">Submit</Button>
                        </Col>
                    </FormGroup>
                </Form>
    

    【讨论】:

      【解决方案2】:

      我正在使用“inline”而不是水平和它的工作。

      <Form inline onSubmit={handleSubmit}>
       <Form.Group>
           <Form.Label>Email</Form.Label>
           <Form.Control type="email" name="email" isInvalid={!isEmpty(errors.email)} value={values.email} onChange={handleChange}></Form.Control>
           <Form.Control.Feedback className="font-weight-bold" type="invalid" role="alert"> {errors.email}</Form.Control.Feedback>
       </Form.Group>
       <Form.Group>
           <Form.Label>Password</Form.Label>
           <Form.Control type="password" name="password" value={values.password} isInvalid={!isEmpty(errors.password)} onChange={handleChange}></Form.Control>
           <Form.Control.Feedback className="font-weight-bold" type="invalid" role="alert"> {errors.password}</Form.Control.Feedback>
      
       </Form.Group>
       <Form.Group className="text-center">
           <Button type="button" variant="primary" className="mt-3" onClick={submitForm}>Login</Button>
       </Form.Group>
      </Form>
      

      【讨论】:

        猜你喜欢
        • 2020-10-26
        • 2014-01-24
        • 1970-01-01
        • 2021-12-26
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 2020-04-22
        • 1970-01-01
        相关资源
        最近更新 更多