Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 无法读取属性';推动';提交时未定义的属性_Reactjs_Firebase - Fatal编程技术网

Reactjs 无法读取属性';推动';提交时未定义的属性

Reactjs 无法读取属性';推动';提交时未定义的属性,reactjs,firebase,Reactjs,Firebase,我正在尝试使用friebase实现搜索功能,但遇到一个错误,即无法读取未定义的属性push。它发生在我点击搜索按钮时,我应该被重定向到搜索结果组件,但什么都没有发生。非常感谢您的帮助!谢谢 NavBar.js import React from "react"; import { Collapse, Navbar, NavbarToggler, NavbarBrand, Nav, Button, Nav

我正在尝试使用friebase实现搜索功能,但遇到一个错误,即无法读取未定义的属性push。它发生在我点击搜索按钮时,我应该被重定向到搜索结果组件,但什么都没有发生。非常感谢您的帮助!谢谢

NavBar.js

 import React from "react";
    import {
      Collapse,
      Navbar,
      NavbarToggler,
      NavbarBrand,
      Nav,
      Button,
      NavItem,
      NavLink,
      UncontrolledDropdown,
      DropdownToggle,
      DropdownMenu,
      DropdownItem
    } from "reactstrap";
    import { Redirect, Link } from "react-router-dom";
    import Searchresults from "./searchresults";

    import app from "../config/dev";
    import { Route, withRouter } from "react-router";

    export default class NavigatioBar extends React.Component {
      constructor(props) {
        super(props);
        this.state = {
          authenticated: false,


currentUser: null,
      redirect: false,
      email: "",
      name: "",

      isOpen: false
    };
    this.toggle = this.toggle.bind(this);
    this.signout = this.signout.bind(this);
  }
  toggle() {
    this.setState({
      isOpen: !this.state.isOpen
    });
  }

  signout() {
    app
      .auth()
      .signOut()
      .then(user => {
        this.setState({ redirect: true });
      });
  }

  componentWillMount() {
    app.auth().onAuthStateChanged(user => {
      if (user) {
        this.setState({
          currentUser: user,
          email: user.email,
          authenticated: true
        });
      } else {
        this.setState({
          currentUser: null,
          authenticated: false
        });
      }
    });
  }
  handleSubmit = e => {
    e.preventDefault();
    this.props.history.push(`/champ/${this.state.name}`);
  };
  render() {
    let content = null;
    if (content !== null) {
      <Searchresults name={this.state.name} />;
    } else {
      <p> h </p>;
    }
    let searchMake = ["Ahri", "Zed", "Malphite", "Talon", "Velkoz", "Jax"];
    let names = searchMake.map((name, i) => {
      return (
        <option key={i} value={name}>
          {name}
        </option>
      );
    });
    const { redirect } = this.state;
    if (redirect) {
      return <Redirect to="/signout" />;
    }
    const authenticated = this.state.authenticated;
    return (
      <nav className="navbar navbar-expand-lg navbar-light bg-light">
        &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
        <Link to="/">
          <a className="navbar-brand" href="/">
            <img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSW4ZhCsXYeyhMYuaOZTGVq2VkeAW9gvDcgOfdPZ1B0WbYaBvR4" />
          </a>
        </Link>
        <button
          className="navbar-toggler"
          type="button"
          data-toggle="collapse"
          data-target="#navbarNavDropdown"

Lin  aria-controls="navbarNavDropdown"
          aria-expanded="false"
          aria-label="Toggle navigation"
        >
          <span className="navbar-toggler-icon" />
        </button>
        <div className="collapse navbar-collapse" id="navbarTogglerDemo01">
          <ul className="navbar-nav mr-auto mt-2 mt-lg-0">
            <li className="nav-item active">
              &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
              <a className="nav-link" href="#">
                <Link to="/">
                  Champs <span className="sr-only">(current)</span>
                </Link>
              </a>
              &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
            </li>
            {authenticated ? (
              <li className="nav-item">
                <a className="nav-link" onClick={this.signout}>
                  signout
                </a>
              </li>
            ) : (
              <li className="nav-item">
                &#160;&#160;&#160;&#160;
                <Link to="/login" className="nav-link">
                  {" "}
                  Login{" "}
                </Link>{" "}
                &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
                <Link to="/signup" className="nav-link">
                  {" "}
                  signup{" "}
                </Link>
              </li>
            )}
          </ul>
          <form
            onSubmit={this.handleSubmit}
            className="form-inline my-2 my-lg-0"
            id="crap"
          >
            <div className="col-3">
              <select
                className="form-control"
                value={this.state.name}
                onChange={e => this.setState({ name: e.target.value })}
              >
                <option value="" disabled selected>
                  Champ
                </option>
                {names}
              </select>
            </div>
            <div className="col-3">
              <button type="submit" className="btn btn-success btn-block">
                Search
              </button>
            </div>
          </form>
        </div>
        {content}
      </nav>
    );
  }
}
从“React”导入React;
进口{
崩溃
导航栏,
纳瓦巴托格勒,
纳瓦巴兰,
导航,
按钮
纳维坦,
导航链接,
不受控制的下降,
下拉开关,
下拉菜单,
下拉项
}从“反应带”;
从“react router dom”导入{Redirect,Link};
从“/Searchresults”导入搜索结果;
从“./config/dev”导入应用程序;
从“react router”导入{Route,withRouter};
导出默认类NavigationBar扩展React.Component{
建造师(道具){
超级(道具);
此.state={
认证:假,
当前用户:null,
重定向:false,
电邮:“,
姓名:“,
伊索彭:错
};
this.toggle=this.toggle.bind(this);
this.signout=this.signout.bind(this);
}
切换(){
这是我的国家({
isOpen:!this.state.isOpen
});
}
签出(){
应用程序
.auth()
.signOut()
。然后(用户=>{
this.setState({redirect:true});
});
}
组件willmount(){
app.auth().onAuthStateChanged(用户=>{
如果(用户){
这是我的国家({
当前用户:用户,
电子邮件:user.email,
真的吗
});
}否则{
这是我的国家({
当前用户:null,
认证:假
});
}
});
}
handleSubmit=e=>{
e、 预防默认值();
this.props.history.push(`/champ/${this.state.name}`);
};
render(){
让content=null;
如果(内容!==null){
;
}否则{
h

; } 让searchMake=[“Ahri”、“Zed”、“Malphite”、“Talon”、“Velkoz”、“Jax”]; 让names=searchMake.map((name,i)=>{ 返回( {name} ); }); const{redirect}=this.state; 如果(重定向){ 返回; } const authenticated=this.state.authenticated; 返回(             
  •                                
  • {认证(
  • 签到
  • ) : (
  •      {" "} 登录名{'} {" "}                      {" "} 注册{“}
  • )}
this.setState({name:e.target.value})} > 钱普 {names} 搜寻 {content} ); } }
您必须更改

export default class NavigatioBar extends React.Component {
    // ...
}

否则,当你这样做

this.props.history.push(`/champ/${this.state.name}`);`
this.props.history
将是未定义的,这就是为什么会出现该错误

this.props.history.push(`/champ/${this.state.name}`);`