Невозможно ввести / добавить значение для компонента ввода в reactjs - PullRequest
0 голосов
/ 03 мая 2020

Вот мой код для компонента ввода == >>>

import React from "react";
import {  Form, Col, Row } from "react-bootstrap";

const Input = props => {
  return (
    <Form.Group as={Row} className="mb-0 px-2 py-4">
      <Form.Label column sm={3}>
        {props.label}
      </Form.Label>
      <Col sm={9}>
          <Form.Control
              name={props.name}
              type={props.type}
              value={props.value}
              // onChange={props.handleChange}
          />
      </Col>
    </Form.Group>
  );
};

export default Input;

Вот код формы == >>

import React, { useState, useEffect } from 'react';
import { Form, Col, Row, Button } from "react-bootstrap";
import Input from "../../../components/form-containers/input";

export default class Submit extends React.Component {

    constructor(props){
        super(props);
        this.state = { 
            username: '23', 
            description: '',
            checked: false,
            errors: {}
        }
    }
    handleChange = event => {
        this.setState({ username: event.target.value });
    };
    handleChangeDescription = event => {
        this.setState({ description: event.target.value });  
      };

    handleChangeCheckbox = event => {
        this.setState({
            checked: !this.state.checked
        })
    }

    handleValidation() {
        let errors = {};
        let formIsValid = true;
        let name = this.state.username;
        let description = this.state.description;

        if(name == '' || description == ''){
            formIsValid = false;
            errors["name"] = "One or more fields cannot be empty";
        }
        this.setState({errors: errors});
        return formIsValid;
    }

    handleSubmit = event => {
        alert(` ${this.state.username} ${this.state.description} `)
        let finalValue = [];
        finalValue.push({
            username: this.state.username,
            description: this.state.description 
        })
        console.log("submitted value...", finalValue)
        event.preventDefault()
        if(this.handleValidation()){
            alert("Form submitted");
        }else{
            alert("Form has errors.")
        }
    };

    render(){
        const borderBottom = {
            borderBottom: "1px dashed #e2e5ec"
        };
        const content = this.state.checked 
            ? <Form.Group as={Row} className="mb-0 px-2 py-4">
                <Form.Label column sm={3}>
                    Parent
                </Form.Label>
                <Col sm={9}>
                    <select className="form-control" name="builder">
                        <option value="fluid">Fluid</option>
                        <option value="fixed">Fixed</option>
                    </select>
                </Col>
            </Form.Group>
            : null;
        return(
            <div className="kt-portlet">
                <div className="kt-portlet__head">
                    <div className="kt-portlet__head-label">
                        <h3 className="kt-portlet__head-title">Category Edit: </h3>
                    </div>
                </div>
                <Form className="kt-form" onSubmit={this.handleSubmit}>
                    <div className="kt-portlet__body">
                        <Input 
                            label={'Name'}
                            name={'name'}
                            type={'text'}
                            value={this.state.username}
                            onChange={this.handleChange}
                        />
                        <div style={borderBottom}></div>
                    </div>
                    <div className="kt-portlet__foot">
                        <div className="row align-items-center">
                            <div className="col-md-3 offset-md-3">
                            <div style={{color: 'red'}}>{this.state.errors["name"]}</div>
                                <Button variant="primary" type="submit" className="mr-4">
                                    Submit
                                </Button>
                                <Button type="submit" variant="default">
                                    Cancel
                                </Button>
                            </div>
                        </div>
                    </div>
                </Form>
            </div>
        );
    }
}

Первое, что у меня есть написанный компонент для поля ввода, а затем я вызвал поле ввода в форме. Проблема не в том, чтобы ввести любой текст в поле ввода. Не могли бы вы go через код и сообщить мне, в чем проблема. Может ли кто-нибудь помочь мне с этим. Заранее спасибо.

...