Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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
Json 如何在React Js中使用my api进行登录验证_Json_Reactjs_Fetch - Fatal编程技术网

Json 如何在React Js中使用my api进行登录验证

Json 如何在React Js中使用my api进行登录验证,json,reactjs,fetch,Json,Reactjs,Fetch,反应JS 我是新手 在我的api中有用户名和密码。如果用户登录,则必须从我的json值进行验证 handleSubmit(e) { fetch('https://randomuser.me/api?results=1') .then((response) => { return response.json() .then((json) => { if (response.ok) { return Promise.reso

反应JS

我是新手

在我的api中有用户名和密码。如果用户登录,则必须从我的json值进行验证

 handleSubmit(e) {

fetch('https://randomuser.me/api?results=1')
  .then((response) => {
    return response.json()
      .then((json) => {
        if (response.ok) {
          return Promise.resolve(json)
        }
        return Promise.reject(json)
      })        
  })
警报(json)无法检查结果。 如何获取响应中的用户名和密码

如果用户成功登录,如何进入下一页

我的完整代码

App.js

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';

import CSSTransitionGroup from 'react-transition-group/CSSTransitionGroup';

const ReactCSSTG = CSSTransitionGroup;

class App extends Component {

  constructor(props) {
    super(props);
    this.state = {
      isVisible: true
    }
    // Bindings
    this.handleSubmit = this.handleSubmit.bind(this);
    this.handleRemount = this.handleRemount.bind(this);
  }


  handleSubmit(e) {
    alert("dsa");

    fetch('https://randomuser.me/api?results=1')
      .then((response) => {
        return response.json()
          .then((json) => {
            if (response.ok) {
              return Promise.resolve(json)
            }
            return Promise.reject(json)
          })            
      })


  }
  handleRemount(e) {
    this.setState({
      isVisible: true
    }, function () {
      console.log(this.state.isVisible)
    });
    e.preventDefault();
  }


  render() {

    // const for React CSS transition declaration
    let component = this.state.isVisible ? <Modal onSubmit={this.handleSubmit} key='modal' /> : <ModalBack onClick={this.handleRemount} key='bringitback' />;

    return <ReactCSSTG transitionName="animation" transitionAppear={true} transitionAppearTimeout={500} transitionEnterTimeout={500} transitionLeaveTimeout={300}>
      {component}
    </ReactCSSTG>
  }
}

// Modal
class Modal extends React.Component {

  render() {

    return <div className='Modal'>
      <Logo />
      <form onSubmit={this.props.onSubmit}>
        <Input type='text' name='username' placeholder='username' />
        <Input type='password' name='password' placeholder='password' />
        <button> Sign In</button>
      </form>

      <a href='#'>Lost your password ?</a>
    </div>
  }
}

// Generic input field
class Input extends React.Component {
  render() {
    return <div className='Input'>
      <input type={this.props.type} name={this.props.name} placeholder={this.props.placeholder} required />
      <label htmlFor={this.props.name}></label>
    </div>
  }

}

// Fake logo
class Logo extends React.Component {
  render() {
    return <div className="logo">
      <i><img src={logo} className="App-logo" alt="logo" /></i>
      <span> Test </span>
    </div>
  }
}

// Button to brind the modal back
class ModalBack extends React.Component {
  render() {
    return (
      <button className="bringitback" onClick={this.props.onClick} key={this.props.className}>Back to login page!</button>
    );

  }
}


export default App;
import React,{Component}来自'React';
从“/logo.svg”导入徽标;
导入“/App.css”;
从“反应转换组/CSSTransitionGroup”导入CSSTransitionGroup;
const ReactCSSTG=CSSTransitionGroup;
类应用程序扩展组件{
建造师(道具){
超级(道具);
此.state={
可见:正确
}
//绑定
this.handleSubmit=this.handleSubmit.bind(this);
this.handleRemount=this.handleRemount.bind(this);
}
handleSubmit(e){
警报(“dsa”);
取('https://randomuser.me/api?results=1')
。然后((响应)=>{
返回response.json()
。然后((json)=>{
if(response.ok){
return Promise.resolve(json)
}
return-Promise.reject(json)
})            
})
}
handleRemount(e){
这是我的国家({
可见:正确
},函数(){
console.log(this.state.isVisible)
});
e、 预防默认值();
}
render(){
//React CSS转换声明的常量
让组件=this.state.isVisible?:;
返回
{component}
}
}
//模态
类Modal扩展了React.Component{
render(){
返回
登录
}
}
//通用输入字段
类输入扩展了React.Component{
render(){
返回
}
}
//假标志
类Logo扩展了React.Component{
render(){
返回
试验
}
}
//按钮,使模式返回
类ModalBack扩展了React.Component{
render(){
返回(
返回登录页面!
);
}
}
导出默认应用程序;
提前谢谢

fetch('https://randomuser.me/api?results=1')
.then((response) => {
   // check for status code from service if success
   // set response in state such as login success
   this.route.navigate(['/']);
  })
.catch(error =>{
   console.log(error);
});    
})

将用户带到下一页。使用react路由器来实现这一点

Step 1: Wrap your <App /> inside <BrowserRouter />
第1步:包裹你的身体
现在使用服务调用验证用户名/密码是否正确的响应

然后
this.route.navigate(['/'])


成功登录后,这会将用户导航到应用程序的主页。

如果您现在只想捕获数据,这就可以了

  fetch('https://randomuser.me/api?results=1')
  .then(function(response) {
    return response.json();
  })
  .then(function(myJson) {
    console.log(JSON.stringify(myJson));
  });

这就是我所做的,请记住我使用express/node设置了后端。 我使用Axios从api获取数据

onSubmit = (e) => {
    e.preventDefault();
    axios.get('API_PATH')
    .then(res => {
      const user = res.data[0].username;
      const password = res.data[0].password;
      const username = this.state.username;
      const passwordEntered = this.state.password;
      if(username === '' && passwordEntered === ''){
        document.getElementById('status').innerHTML = '<p>Please Enter A Valid Username and Password</p>';
      }else if(user === username && passwordEntered === password){
        document.getElementById('status').innerHTML = '';
        console.log(user, password)
      }else{
          document.getElementById('status').innerHTML = '<p>Please Enter A Valid Username and Password</p>';
      }
    })
    .catch(error => {
      console.log(error);
    });

  }
onSubmit=(e)=>{
e、 预防默认值();
get('API\u PATH')
。然后(res=>{
const user=res.data[0]。用户名;
const password=res.data[0]。密码;
const username=this.state.username;
const passwordEntered=this.state.password;
如果(用户名==''&&密码输入==''){
document.getElementById('status')。innerHTML='请输入有效的用户名和密码

'; }else if(用户===用户名和密码输入===密码){ document.getElementById('status')。innerHTML=''; console.log(用户、密码) }否则{ document.getElementById('status')。innerHTML='请输入有效的用户名和密码

'; } }) .catch(错误=>{ console.log(错误); }); }
这是我用的表格

<Form
          >
              <Form.Row>
              <Form.Group as={Col}>
              <Form.Label>Username</Form.Label>
                <Form.Control
                type="text"
                name="username"
                id="username"
                value={this.state.value}
                onChange={this.handleChange}
                >
                </Form.Control>
              </Form.Group>
              <Form.Group as={Col}>
                <Form.Label>Password</Form.Label>
                <Form.Control
                type="text"
                id="password"
                name="password"
                value={this.state.value}
                onChange={this.handleChange}
                />
              </Form.Group>
              </Form.Row>
              <Button className="btn btn-sm btn-light" onClick={this.onSubmit}>
                <i style={redColor} className="fas fa-sign-in-alt"></i> Login
              </Button>
        </Form>

用户名
密码
登录

where's alert(json)?@bhojendraurauniyar我曾在何处保持警惕,但它不起作用。我不知道该在哪里发出警报(然后你的问题对我们来说就不清楚了。我需要在获取数据时获取数据。。这就是我现在所需要的一切@bhojendraauniyarit很好。。如何从json数据中获取用户名和密码?@LazarNikolic?在console.log myJson.results[0]中使用这个代替json.stringify。login.username,myJson.results[0].login.password,您将获得用户名和密码。如果您喜欢我的答案,请您投票或将其标记为已解决。