簡體   English   中英

在 React 中輸入一個字符后失去焦點

[英]Input loses focus after one character in React

輸入一個字符后輸入失去焦點,它在每個組件的每個輸入上,我完全按照 React 輸入觀看了一些視頻,但它們根本不適合我。 我試過使用鍵並在單獨的組件中呈現輸入,但似乎沒有任何效果。

input 和 textarea 是它發生的地方。

import React, { Component } from "react";

import "./bootstrap/css/landing-page.min.css";
import "./vendor/fontawesome-free/css/all.min.css";
import "./vendor/bootstrap/css/bootstrap.min.css";
import "./vendor/simple-line-icons/css/simple-line-icons.css";

import "./App.css";
import "./Group.css";

import store from "./store";
import Home from "./App";

import { Provider } from "react-redux";
import { connect } from "react-redux";
import {
  addBug,
  updateGroupID,
  getBugs,
  createAccount,
  deleteBug
} from "./actions/itemAction";

import { Container } from "reactstrap";

import {
  BrowserRouter as Router,
  Switch,
  Route,
  Redirect
} from "react-router-dom";
import { Link } from "react-router-dom";
import Select from "react-select";

class Group extends Component {
  constructor(props) {
    super(props);
    this.state = {
      show: false,
      modalBug: []
    };
  }

  showModal = bug => {
    this.setState({ modalBug: bug });
    this.setState({ show: true });
  };

  hideModal = () => {
    this.setState({ show: false });
  };

  setBugTitle = e => {
    this.setState({ BugTitle: e.target.value });
    console.log(this.state.BugTitle);
  };
  setBugDescription = e => {
    this.setState({ BugDescription: e.target.value });
    console.log(this.state.BugDescription);
  };



  render() {

      if (
        this.props.user.loggedIn === true &&
        this.props.user.user.GroupID !== "NOGROUP"
      ) {
        return (
          <Provider store={store}>
            <div className="App">
              <link
                href="https://fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic"
                rel="stylesheet"
                type="text/css"
              />

              <nav className="navbar navbar-light bg-light static-top">
                <div className="container">
                  <Link to="/">
                    <div className="navbar-brand">Bug Buster</div>
                  </Link>
                  <button className="btn btn-primary" onClick={this.authCheck}>
                    Log out
                  </button>
                </div>
              </nav>
              <div className="flex-container">
                <div className="bugSubmission">
                  <ul id="newBug">
                    <h3>Submit New Bug</h3>
                    <li>
                      //Input for Bug Title
                      <input
                        type="text"
                        placeholder="Enter Title..."
                        onChange={this.setBugTitle}
                        value={this.state.BugTitle}
                      ></input>
                    </li>
                    <li>
                      //Input for Bug Description
                      <textarea
                        placeholder="Enter Description..."
                        onChange={this.setBugDescription}
                        value={this.state.BugDescription}
                      ></textarea>
                    </li>
                    <li>
                      <button
                        className="btn btn-primary"
                        onClick={() => {
                          const newBug = {
                            Title: this.state.BugTitle,
                            Description: this.state.BugDescription,
                            PosterName:
                              this.props.user.user.FirstName +
                              " " +
                              this.props.user.user.LastName,
                            PosterID: this.props.user.user.UserId,
                            GroupID: this.props.user.user.GroupID
                          };

                          this.props.addBug(newBug);
                        }}
                      >
                        Submit Bug
                      </button>
                    </li>
                  </ul>
                </div>
                <Modal
                  show={this.state.show}
                  handleClose={this.hideModal}
                  bug={this.state.modalBug}
                ></Modal>

              </div>
            </div>



            <script src="vendor/jquery/jquery.min.js"></script>
            <script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
          </Provider>
        );
      } else {
        return <h2>No user logged in</h2>;
      }
    };

    return (
      <Provider store={store}>
        <Router>
          <div className="App">
            <Switch>
              <Route path="/" exact component={Home} />
              <Route path="/group" exact component={Group} />
            </Switch>
          </div>
        </Router>
      </Provider>
    );
  }
}

const mapStateToProps = state => ({
  user: state.user,
  item: state.user,
  bugs: state.bugs
});

export default connect(mapStateToProps, {
  createAccount,
  updateGroupID,
  addBug,
  getBugs,
  deleteBug
})(Group);


我認為您必須在狀態中初始化BugTitle

  constructor(props) {
    super(props);
    this.state = {
      show: false,
      modalBug: [],
      BugTitle: ""
    };
  }

並調用setBugTitle函數,你可以像這樣

        <input
          type="text"
          placeholder="Enter Title..."
          onChange={e => this.setBugTitle(e)}
          value={this.state.BugTitle}
        />

我希望能幫助你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM