Я работаю в проекте, где у него четыре разных пользователя, логин и регистрация, и их панель управления. У меня есть созданная часть входа для всех пользователей, так как это единый API, я использовал регистр переключения, чтобы перенаправить пользователя на панель мониторинга в зависимости от типа пользователя. Я сокращаю и аксиос в этом процессе
Теперь мне нужно создать регистрационную часть для них. Для регистрации у каждого пользователя есть разные API. Я создал регистрационную часть и редукционный магазин для одного пользователя. Итак, для оставшегося пользователя сделайте, мне нужно создать другой магазин или я могу сделать это в том же магазине.
Ниже код моей регистрационной формы
Примечание: форма, которую я использовал ниже, только для примера. У моего оригинала есть поля лота.
Заранее спасибо
/***Form One***/
import React, { Component } from 'react';
import {
TextField } from '@material-ui/core';
class FormOne extends Component {
constructor(props){
super(props);
this.state = {
email: "",
password: "",
confirmPassword: ""
};
}
buttonClick = event => {
event.preventDefault();
console.log(this.state);
this.setState({
submitted: true
})
const {email, password} = this.state;
const { dispatch } = this.props;
if(email && password) {
dispatch(registerUser(email, password))
}
}
render(){
return(
<div>
<TextField
id="standard-email-input"
label="Email"
className="form-field"
type="email"
name="email"
autoComplete="email"
onChange={this.props.email}
/>
<TextField
id="standard-password-input"
label="Password"
className="form-field"
type="password"
name="password"
onChange={this.props.password}
/>
<TextField
id="standard-confirm-input"
label="Confirm Password"
className="form-field"
type="password"
onChange={this.props.confirmPassword}
name="confirmPassword"
/>
<Button variant="contained" className={classes.submitButton} onClick={this.buttonClick}>
Register Now
</Button>
</div>
)}
}
export default FormOne;
/***Form Two***/
import React, { Component } from 'react';
import {
TextField } from '@material-ui/core';
class FormTwo extends Component {
constructor(props){
super(props);
this.state = {
email: "",
password: "",
confirmPassword: ""
};
}
buttonClick = event => {
event.preventDefault();
console.log(this.state);
this.setState({
submitted: true
})
const {email, password} = this.state;
const { dispatch } = this.props;
if(email && password) {
dispatch(registerUser(email, password))
}
}
render(){
return(
<div>
<TextField
id="standard-email-input"
label="Email"
className="form-field"
type="email"
name="email"
autoComplete="email"
onChange={this.props.email}
/>
<TextField
id="standard-password-input"
label="Password"
className="form-field"
type="password"
name="password"
onChange={this.props.password}
/>
<TextField
id="standard-confirm-input"
label="Confirm Password"
className="form-field"
type="password"
onChange={this.props.confirmPassword}
name="confirmPassword"
/>
<Button variant="contained" className={classes.submitButton} onClick={this.buttonClick}>
Register Now
</Button>
</div>
)}
}
export default FormTwo;
/***action.js***/
import axios from "axios";
import { REGISTERATION_REQUEST, REGISTERATION_COMPLETED, REGISTERATION_ERROR } from "./types";
import qs from "qs";
import history from '../../history/history.js';
const startRegister = () => {
return {
type: REGISTERATION_REQUEST
};
};
const registerComplete = data => ({
type: REGISTERATION_COMPLETED,
data
});
const registerError = err => ({
type: REGISTERATION_ERROR,
err
});
export const registerUser = (email, password) => {
return dispatch => {
dispatch(startRegister());
let headers = {
"Content-Type": "application/x-www-form-urlencoded"
};
const data = qs.stringify({
email, password
});
axios
.post("api-link/registerUserOne", data, {
headers: headers
})
.then(function (resp) {
dispatch(registerComplete());
window.location.reload();
history.push('/login');
//dispatch(registerComplete(resp.data));
})
.catch(err => dispatch(registerError(err)));
}
};
/**reducer.js***/
import { REGISTERATION_REQUEST, REGISTERATION_COMPLETED, REGISTERATION_ERROR } from "./types";
import initialState from "./initialState";
const reducer = (state = initialState, action) => {
switch (action.type) {
case REGISTERATION_REQUEST:
return {
...state,
loading: true,
token: null,
userName: ""
};
case REGISTERATION_COMPLETED:
return {
...state,
token: action.data.access_token,
userName: action.data.userName,
userType: action.data.userType
};
case REGISTERATION_ERROR:
return {
...state,
loading: false,
error: true,
people: []
};
default:
return state;
}
};
export default reducer;
/***initialState.js***/
const initialState = {
loading: false,
token: null,
userName: "",
userType: null
};
export default initialState;
/***Type.js***/
const REGISTERATION_REQUEST = "REGISTERATION_REQUEST";
const REGISTERATION_COMPLETED = "REGISTERATION_COMPLETED";
const REGISTERATION_ERROR = "REGISTERATION_ERROR";
export { REGISTERATION_REQUEST, REGISTERATION_COMPLETED, REGISTERATION_ERROR };
/***index.js(reducer)***/
import reducer from "./reducer";
export default reducer;