无法呈现身份验证页面

Stas Motorny:

我正在尝试设置Firebase身份验证。我有两个组成部分。第一个是带firebase.auth()。currentUser的应用程序,我正在检查是否有已登录的用户,此后,如果有这样的用户,则呈现页面;如果没有,则呈现登录页面。第二个组件是我从父级获取处理程序并尝试呈现登录页面。现在,我只看到空白页,并且显示错误“未定义'props'”。请帮助我修复它。

App.js

import React, {Component} from "react";
import {
    BrowserRouter as Router,
    Switch,
    Route,
    Link
} from "react-router-dom";
import { Layout } from 'antd';
import AddStock from './components/stocksDB/addStock';
import { Typography, Menu } from 'antd';
import 'antd/dist/antd.css';
import './App.css';
import AddClient from './components/clients/addClient.js';
import PifForm from './components/clients/pif/pifForm';
import KuaForm from './components/clients/pif/kuaForm';
import firebase from './firebase.js';
import {Login} from './components/login.js'

const { Title } = Typography;

const {Header, Footer, Content} = Layout;

class App extends Component {
    constructor(props){
        super(props);
        this.state = {
            login: '',
            password: ''
        }
    }

    handleChange = (event) => {
        const target = event.target;
        const name = target.name;
        this.setState({
            [name]: target.value
        }, () => {console.log(name, this.state)})
    };

    signUp = () => {
        firebase.auth().createUserWithEmailAndPassword(this.state.login, this.state.password).catch(function(error) {
            console.log(error);
        })
    };

    signIn = () => {
        firebase.auth().signInWithEmailAndPassword(this.state.login, this.state.password).catch(function(error) {
            console.log(error);
        })
    };

    onFinishFailed = errorInfo => {
        console.log('Failed:', errorInfo);
    };

    render() {
        let user = firebase.auth().currentUser;
        if (user) {
            return (
                <Router>
                    <Layout theme='dark'>
                        <Header mode="horizontal">
                            <div className='header-wrapper'>
                                <Title level={2} style={{"color": "rgb(166 173 180)"}}>Оберіть функцію:</Title>
                                <Menu theme="dark" mode="horizontal" defaultSelectedKeys={['2']}>
                                    <Menu.Item key="1">
                                        <Link to='/stocksList'>Довідник ЦП</Link>
                                    </Menu.Item>
                                    <Menu.Item key="2">
                                        <Link to='/addClients'>Довідник клієнтів</Link>
                                    </Menu.Item>
                                </Menu>
                            </div>
                        </Header>
                        <Content>
                            <Switch>
                                <Route path="/stocksList">
                                    <AddStock/>
                                </Route>
                                <Route path="/addClients">
                                    <AddClient/>
                                </Route>
                                <Route path="/kuaForm">
                                    <KuaForm/>
                                </Route>
                                <Route path="/pifForm">
                                    <PifForm/>
                                </Route>
                            </Switch>
                        </Content>
                        <Footer>Footer</Footer>
                    </Layout>
                </Router>
            )
        } else {
            return (
                <Login signIn={this.signIn} onFinishaedFailed={this.onFinishFailed} handleChange={this.handleChange} signUp={this.signUp} />
            )
        }
    }
}

export default App;

Login.js

import React from 'react';
import { Form, Input, Button } from 'antd';
import { Typography  } from 'antd';

const { Title } = Typography;

export const Login = () => {
    const layout = {
        labelCol: { span: 8 },
        wrapperCol: { span: 16 },
    };
    const tailLayout = {
        wrapperCol: { offset: 8, span: 16 },
    };

    return (
        <div>
            <Title level={2} style={{ "color": "rgb(166 173 180)" }}>Для продовження роботи пройдіть автентифікацію.</Title>

            <Form
                {...layout}
                name="basic"
                initialValues={{ remember: true }}
                onFinish={props.signIn()}
                onFinishFailed={this.props.onFinishFailed()}
            >
                <Form.Item
                    label="Username"
                    name="username"
                    rules={[{ required: true, message: 'Please input your username!' }]}
                >
                    <Input name='login' onChange={this.props.handleChange()}/>
                </Form.Item>

                <Form.Item
                    label="Password"
                    name="password"
                    rules={[{ required: true, message: 'Please input your password!' }]}
                >
                    <Input.Password name='password' onChange={this.props.handleChange()}/>
                </Form.Item>

                <Form.Item {...tailLayout}>
                    <Button type="primary" htmlType="submit">
                        Увійти
                    </Button>

                    <Button type="primary" htmlType="button" onClick={this.props.signUp()}>
                        Зареєструватися
                    </Button>
                </Form.Item>
            </Form>
        </div>
    );
};
Gaurab Kc:

由于Login是功能性组件,因此您需要传递并定义以下道具:const Login = (props) => {然后,您可以使用props.handleChange访问道具props.signUp

无需this像在基于类的组件中那样使用this,而在功能组件内部未定义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java EE 6中实现身份验证机制

使用Go测试时出现身份验证错误

在Nexus上发布到私有NPM存储库时出现身份验证错误

Rails API:实现身份验证的最佳方法?

使用JWT在Asp.net Web API上实现身份验证

Gmail出现身份验证问题。某些功能可能不起作用

在现实世界中实现身份服务器身份验证

通过PHPMailer发送电子邮件时出现身份验证错误

在Elixir Phoenix Absinthe GraphIQL客户端中实现身份验证?

为什么在尝试加入docker swarm时出现身份验证错误

连接到特定的mongodb数据库时出现身份验证错误

无法实现身份验证路由

调用Orange Product Order事件服务时出现身份验证错误

创建网站时出现身份验证失败问题

使用Mulesoft(Mule 4)使用IBM MQ时出现身份验证问题

尝试使用Flask在MongoDB中插入字段时出现身份验证错误

将文件上传到Firebase存储时出现身份验证错误

尝试启动pymongo中的副本集时出现身份验证错误

使用twitter4j库时未发现身份验证挑战

从远程主机连接到MongoDB时出现身份验证错误

使用 FCM gem RAILS 发送通知时出现身份验证错误

使用 JSessionId 实现身份验证

我们对用户进行身份验证的方式不再有效,出现身份验证错误

如何实现身份验证保护

是否可以实现身份验证以在 Apple 钱包中显示条形码?

无法在简单的 HTML、JS 页面上使用 firebase 身份验证进行身份验证

JWT 身份验证会导致与常规身份验证发生冲突。我无法从登录页面登录

传递基本身份验证凭据时在 axios 上出现身份验证错误

从 Azure FHIR 服务请求 FHIR 资源时出现身份验证错误