如何使用钩子从数据库登录时将数据从子级更新为父级

蓝精灵

嗨,我刚刚开始使用钩子,我正尝试将我从登录页面获得的数据传递给父级,以便用户可以访问他/她的页面,但是我不知道该怎么做,因此我在这里使用了本指南

但这只是给我一个不是函数错误

我不知道为什么

这是我的app.js

import React, { useState, useEffect } from 'react';
import {BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import {authenticationService} from '../services/authentication.service';
import Home from '../Pages/Desktop/Desktop';
import Login from '../Pages/Login_Register/Login';
import Register from '../Pages/Login_Register/Register';
import history from '../history';

const App = (props) => {
  const [currentUser, setCurrentUser] = useState(null);
  const [isAdmin, setIsAdmin] = useState(null);
  const [isVIP1, setIsVIP1] = useState(false);
  const [name, setName] = useState(null);
  const [id, setId] = useState('');
 

useEffect(() => {
  authenticationService.currentUser.subscribe(z => {
    setCurrentUser(z) 
    
  });
}, [])

    return (
      <div history={history}>
          <Router>
                  <div>
                    <Switch>
                      <Route path="/register">
                        <Register />
                      </Route>
                      <Route path="/login">
                        <Login firstName={fornavn => setName(fornavn)} user_id={id => setId(id)} admin={admin => setIsAdmin(admin)} vip={vip1 => setIsVIP1(vip1)} />
                      </Route>
                      <Route path="/home">
                        <Home />
                      </Route>
                    </Switch>
                  </div>
          </Router>
      </div>
    );
}

export default App;

这是我的login.js

import React, { useState } from 'react';
import {authenticationService} from '../../services/authentication.service';
import { Redirect } from 'react-router'
import { useForm } from 'react-hook-form';

export default function Login({firstname, user_id, admin, vip, props}) {
    const [currentUser, setCurrentUser] = useState(null);
    const [isAdmin, setIsAdmin] = useState(null);
    const [isVIP1, setIsVIP1] = useState(false);
    const [name, setName] = useState(null);
    const [id, setId] = useState('')
    const [submitted, setSubmitted] = useState(false);
    const { register, handleSubmit, errors } = useForm();
    if (submitted) {
        return <Redirect push to={{
          pathname: '/home'
        }}
        />
      }   
    let updname = null;
    const onSubmit=(data) => {
                  authenticationService.login(data)
                    .then(
                      user => {
                        setSubmitted(true)
                        updname = user.fornavn;
                    },
                    error => {
                        console.log(error);
                    }
                    );
                    setName(updname)
                    firstname(updname)
    }
  
    return (
        <div>
            <h2>log ind</h2>
                    <form onSubmit={handleSubmit(onSubmit)}>
                        <div>
                            <div>
                                <input name="email" type="text" ref={register({required: true})}/>
                            </div>
                            <div className="form-group">
                           <input name="password" type="password" ref={register({required: true})} />
                            </div>
                                                        
                            <div>
                                <button type="submit"/>logind</button>
                                
                            </div>
                        </div>
                    </form>
        </div>
    )
}

这是最简单的解决方案,因此,但是不幸的是,任何人都无法告诉我原因或帮助我找到使其工作的另一种方法吗?

蓝精灵

好吧,最初的事情是我说错了

TypeError:无法读取null的属性'fornavn'

这对我来说毫无意义,因为当我进行console.log记录时,fornavn的整个内容(丹麦语中的拳头名)就在那里

 useEffect(() => {
  authenticationService.currentUser.subscribe(z => {
    console.log(z)
    setCurrentUser(z);
    setName(z.fornavn)
    
  });
 
}, [])

所以我试图从登录函数的响应中得到巫婆给了我更多的问题,但是我的问题的解决方案是在useEffect中设置一个if语句,如下所示:

useEffect(() => {
  authenticationService.currentUser.subscribe(z => {
    if(z === null){
      setCurrentUser(null);
      setName(null);
    }else{
      setCurrentUser(z);
      setName(z.fornavn);
    }
   
  });
 
}, [currentUser])

现在就可以了。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击列表项时如何将数据从子级传递到父级

来自分类Dev

php jstree 如何仅在单击父级展开时从数据库加载子级

来自分类Dev

将数据从子级汇总到父级以进行绑定

来自分类Dev

将数据从子级发送到父级 React

来自分类Dev

如何将数据从子级传递到父级视图控制器?迅速

来自分类Dev

在反应中如何将数据从子级传递到父级?

来自分类Dev

使用VueJS将数据从子级发送到父级

来自分类Dev

我应该使用Redux存储将数据从子级传递到父级吗?

来自分类Dev

休眠如何确保使用数据库中的最新数据更新二级缓存

来自分类Dev

仅在加载时将数据从子级传递到父级,而无需事件,这在 vue 世界中可能吗?

来自分类Dev

如何使用React钩子将数据从父级传递给子级

来自分类Dev

角度8:使用反应式表单将表单数据从子级输出发送到父级

来自分类Dev

Teradata 15:如何将数据库从一个父级移动到另一个父级?

来自分类Dev

linux C从子级向父级发送数据很好,但是无法从子级向父级发送数据

来自分类Dev

使用方法$ emit()在Vue.js中将数据从子级传递到父级到父级

来自分类Dev

AngularJS - 如何通过嵌套(自定义)指令从子级到父级传递数据

来自分类Dev

如何在Vuejs中从子级到父级$emit以重置数据列表

来自分类Dev

在 Firebase 数据库中获取父级

来自分类Dev

从服务登录后将数据传递给父级

来自分类Dev

如何在 firebase 数据库中所有消息的子级中将“读取”更新为 true

来自分类Dev

如何从子级调用父级函数并且不更新父级状态?

来自分类Dev

以相同的JSON父级和子级返回数据库结果

来自分类Dev

平面数据库记录到父级子级XML的转换

来自分类Dev

休眠-子级错误不会将父级插入数据库回滚

来自分类Dev

如何将数据从孩子传递给父母?当父级基于类而子级基于功能时

来自分类Dev

每次将子级添加到firebase数据库时,都会调用viewDidLoad

来自分类Dev

Vue2 Laravel5.3如何在事件中将数据从子级发送到父级

来自分类Dev

SwiftUI更新父级NavigationView的数据

来自分类Dev

Android现有多个子级时,如何从Firebase数据库中删除记录?

Related 相关文章

  1. 1

    单击列表项时如何将数据从子级传递到父级

  2. 2

    php jstree 如何仅在单击父级展开时从数据库加载子级

  3. 3

    将数据从子级汇总到父级以进行绑定

  4. 4

    将数据从子级发送到父级 React

  5. 5

    如何将数据从子级传递到父级视图控制器?迅速

  6. 6

    在反应中如何将数据从子级传递到父级?

  7. 7

    使用VueJS将数据从子级发送到父级

  8. 8

    我应该使用Redux存储将数据从子级传递到父级吗?

  9. 9

    休眠如何确保使用数据库中的最新数据更新二级缓存

  10. 10

    仅在加载时将数据从子级传递到父级,而无需事件,这在 vue 世界中可能吗?

  11. 11

    如何使用React钩子将数据从父级传递给子级

  12. 12

    角度8:使用反应式表单将表单数据从子级输出发送到父级

  13. 13

    Teradata 15:如何将数据库从一个父级移动到另一个父级?

  14. 14

    linux C从子级向父级发送数据很好,但是无法从子级向父级发送数据

  15. 15

    使用方法$ emit()在Vue.js中将数据从子级传递到父级到父级

  16. 16

    AngularJS - 如何通过嵌套(自定义)指令从子级到父级传递数据

  17. 17

    如何在Vuejs中从子级到父级$emit以重置数据列表

  18. 18

    在 Firebase 数据库中获取父级

  19. 19

    从服务登录后将数据传递给父级

  20. 20

    如何在 firebase 数据库中所有消息的子级中将“读取”更新为 true

  21. 21

    如何从子级调用父级函数并且不更新父级状态?

  22. 22

    以相同的JSON父级和子级返回数据库结果

  23. 23

    平面数据库记录到父级子级XML的转换

  24. 24

    休眠-子级错误不会将父级插入数据库回滚

  25. 25

    如何将数据从孩子传递给父母?当父级基于类而子级基于功能时

  26. 26

    每次将子级添加到firebase数据库时,都会调用viewDidLoad

  27. 27

    Vue2 Laravel5.3如何在事件中将数据从子级发送到父级

  28. 28

    SwiftUI更新父级NavigationView的数据

  29. 29

    Android现有多个子级时,如何从Firebase数据库中删除记录?

热门标签

归档