Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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
Javascript instance.render不是一个函数。(功能组件)_Javascript_Reactjs_React Props_React Functional Component - Fatal编程技术网

Javascript instance.render不是一个函数。(功能组件)

Javascript instance.render不是一个函数。(功能组件),javascript,reactjs,react-props,react-functional-component,Javascript,Reactjs,React Props,React Functional Component,这是我的第一篇文章 我已经读了很多关于功能组件的书,并尝试了我能做的一切,但在我的案例中似乎什么都不起作用。我正在获取实例。渲染不是一个函数 希望你们中的一些人能看到我的错误在哪里,因为我对编程非常陌生。这是我的代码: App.js import React, { useEffect, useState } from 'react'; import './App.css'; import Login from "./components/Login" import Feed

这是我的第一篇文章

我已经读了很多关于功能组件的书,并尝试了我能做的一切,但在我的案例中似乎什么都不起作用。我正在获取
实例。渲染不是一个函数

希望你们中的一些人能看到我的错误在哪里,因为我对编程非常陌生。这是我的代码:

App.js

import React, { useEffect, useState } from 'react';
import './App.css';
import Login from "./components/Login"
import Feed from "./components/Feed"
import { BrowserRouter as Router, Route, Switch } from "react-router-dom"


const App = () => {
  const [isLoggedIn, setLoggedIn] = useState(false)

  const handleLogin = token => {
    if (!token) return
    localStorage.setItem('token', token)

    setLoggedIn(true)
  }

  const handleLogout = () => () => {
    setLoggedIn(false)
    localStorage.clear()
  }
  
  return (
    <div className="App">
    
      <Router>
        <Feed isLoggedIn={isLoggedIn} logout={handleLogout} />
        <Switch>
          <Route
            exact
            path='/login'
            component={(props) => (
              <Login {...props} onLogin={handleLogin} />
            )}>
          </Route>
        </Switch>
      </Router>
    </div>
  ) 
}

export default App;
import React from "react"
import axios from "axios"
import { Button, Form, FormGroup, Input } from 'reactstrap'
import "../css/Login.css"
import { Link, BrowserRouter as Router, Switch, Route } from "react-router-dom"
import Signin from "./Signin"

class Login extends React.Component {
    constructor (props) {
        super(props)
        this.state = {
            user_name: "",
            password: "", 
            error: false,
            loggedIn: false,
        }
    }

    handleChange = (e) => {
        this.setState({
            [e.target.name]: e.target.value,
        })
    }

    login = (event) => {
        event.preventDefault()
        const { user_name, password } = this.state
        axios("http://localhost:7001/api/login", {
            method: "POST",
            data: {
                user_name,
                password
            }
        })
        .then((response) => {
            this.props.onLogin(response.data.token)
            this.setState({ loggedIn: true })
            this.feedRedirect()
            console.log(response.data)
        })
        .catch((error) => {
            console.log(error)
        })
        this.setState({
            user_name: "",
            password: "",
            error: false,
        })
    }

    feedRedirect = () => {
        this.props.history.push('/feed')
    }


    render() {
        const { user_name, password, error, loggedIn } = this.state
        return (
            <div className="login">
                <Form className="login-container" onSubmit={this.login}>
                    <FormGroup>
                        <Input
                            value={this.state.user_name}
                            onChange={this.handleChange}
                            name="user_name"
                            type="text"
                            className="form-control mb-2"
                            placeholder="Username"
                        />
                    </FormGroup>
                    <FormGroup>
                        <Input
                            value={this.state.password}
                            onChange={this.handleChange}
                            name="password"
                            type="password"
                            className="form-control mb-2"
                            placeholder="Password"
                        />
                    </FormGroup>
                    <Button className="button-login" disabled={!user_name || !password}>
                        Log in
                    </Button>
                    <hr />
                    <Router>
                        <Link to="/signin"> Don't have an account? Sign up here</Link>
                    <Switch>
                        <Route path="/signin" component={Signin}> 
                        
                        </Route>
                    </Switch>
                    </Router>
                </Form>
                
            </div>
        )
    }
}
export default Login;
import React,{useffect,useState}来自“React”;
导入“/App.css”;
从“/components/Login”导入登录名
从“/components/Feed”导入源
从“react Router dom”导入{BrowserRouter as Router,Route,Switch}
常量应用=()=>{
const[isLoggedIn,setLoggedIn]=useState(false)
const handleLogin=令牌=>{
如果(!令牌)返回
localStorage.setItem('token',token)
setLoggedIn(真)
}
常量handleLogout=()=>()=>{
setLoggedIn(假)
localStorage.clear()
}
返回(
(
)}>
) 
}
导出默认应用程序;
Login.js

import React, { useEffect, useState } from 'react';
import './App.css';
import Login from "./components/Login"
import Feed from "./components/Feed"
import { BrowserRouter as Router, Route, Switch } from "react-router-dom"


const App = () => {
  const [isLoggedIn, setLoggedIn] = useState(false)

  const handleLogin = token => {
    if (!token) return
    localStorage.setItem('token', token)

    setLoggedIn(true)
  }

  const handleLogout = () => () => {
    setLoggedIn(false)
    localStorage.clear()
  }
  
  return (
    <div className="App">
    
      <Router>
        <Feed isLoggedIn={isLoggedIn} logout={handleLogout} />
        <Switch>
          <Route
            exact
            path='/login'
            component={(props) => (
              <Login {...props} onLogin={handleLogin} />
            )}>
          </Route>
        </Switch>
      </Router>
    </div>
  ) 
}

export default App;
import React from "react"
import axios from "axios"
import { Button, Form, FormGroup, Input } from 'reactstrap'
import "../css/Login.css"
import { Link, BrowserRouter as Router, Switch, Route } from "react-router-dom"
import Signin from "./Signin"

class Login extends React.Component {
    constructor (props) {
        super(props)
        this.state = {
            user_name: "",
            password: "", 
            error: false,
            loggedIn: false,
        }
    }

    handleChange = (e) => {
        this.setState({
            [e.target.name]: e.target.value,
        })
    }

    login = (event) => {
        event.preventDefault()
        const { user_name, password } = this.state
        axios("http://localhost:7001/api/login", {
            method: "POST",
            data: {
                user_name,
                password
            }
        })
        .then((response) => {
            this.props.onLogin(response.data.token)
            this.setState({ loggedIn: true })
            this.feedRedirect()
            console.log(response.data)
        })
        .catch((error) => {
            console.log(error)
        })
        this.setState({
            user_name: "",
            password: "",
            error: false,
        })
    }

    feedRedirect = () => {
        this.props.history.push('/feed')
    }


    render() {
        const { user_name, password, error, loggedIn } = this.state
        return (
            <div className="login">
                <Form className="login-container" onSubmit={this.login}>
                    <FormGroup>
                        <Input
                            value={this.state.user_name}
                            onChange={this.handleChange}
                            name="user_name"
                            type="text"
                            className="form-control mb-2"
                            placeholder="Username"
                        />
                    </FormGroup>
                    <FormGroup>
                        <Input
                            value={this.state.password}
                            onChange={this.handleChange}
                            name="password"
                            type="password"
                            className="form-control mb-2"
                            placeholder="Password"
                        />
                    </FormGroup>
                    <Button className="button-login" disabled={!user_name || !password}>
                        Log in
                    </Button>
                    <hr />
                    <Router>
                        <Link to="/signin"> Don't have an account? Sign up here</Link>
                    <Switch>
                        <Route path="/signin" component={Signin}> 
                        
                        </Route>
                    </Switch>
                    </Router>
                </Form>
                
            </div>
        )
    }
}
export default Login;
从“React”导入React
从“axios”导入axios
从“reactstrap”导入{Button,Form,FormGroup,Input}
导入“./css/Login.css”
从“react Router dom”导入{Link,BrowserRouter作为路由器,交换机,路由}
从“/Signin”导入登录
类登录扩展了React.Component{
建造师(道具){
超级(道具)
此.state={
用户名:“”,
密码:“”,
错误:false,
洛格丁:错,
}
}
handleChange=(e)=>{
这是我的国家({
[e.target.name]:e.target.value,
})
}
登录=(事件)=>{
event.preventDefault()
const{user_name,password}=this.state
axios(“http://localhost:7001/api/login", {
方法:“张贴”,
数据:{
用户名,
密码
}
})
。然后((响应)=>{
this.props.onLogin(response.data.token)
this.setState({loggedIn:true})
this.feedRedirect()
console.log(response.data)
})
.catch((错误)=>{
console.log(错误)
})
这是我的国家({
用户名:“”,
密码:“”,
错误:false,
})
}
feedRedirect=()=>{
this.props.history.push(“/feed”)
}
render(){
const{user_name,password,error,loggedIn}=this.state
返回(
登录

没有帐户?在这里注册 ) } } 导出默认登录;

任何帮助都将不胜感激。提前谢谢。

您是否错过了会议?从“React”导入React;从“react dom”导入react dom;嘿,查理,谢谢你的回答,我在复制代码时一定错过了它们,但我的代码中有这样的它们:在App.js import React中,{useffect,useState}来自'React';在Login.js import React from“React”@Guerreri88 No中,您复制了它们。当使用代码格式时,记得在“``后加一行新行。啊,好的@Calculuswhiz,我会记住的。谢谢;)@没问题。我一直在看。错误消息是否也会告诉您错误所在的文件/行?是否有其他错误消息?