@mindaJalaj - может быть, - я все еще тестирую его с реальными сервисами - у меня это происходит с помощью axios - теперь с приведениями / действиями - у меня есть rootReducer - и он содержит дочерние редукторы прямо сейчас, теперь в КАЖДОМ из моих Избыточные формы - как раз там, где они есть - экспорт - есть значение "формы" - создать ли уникальное имя для КАЖДОЙ формы? - форма: 'regFrom' - форма: 'loginForm'
нь плохо знаком с редуксом и редукс-формой. После прохождения проверки форма отправляется следующим образом - но на этом этапе я хочу спрятать ответ пользователя для входа в систему с избыточным кодом, чтобы контролировать остальную часть рабочего процесса приложения -
submit (values) {
// creating the body of the request
//console.log('values', values)
const body = {
request: {
email: values.email,
password: values.password
}
}
const initialUser = { name: '' };
const loggedin = false;
// sending the object to the backend api
fetch('/test-api/loginuser', {
method: 'POST',
mode: 'no-cors',
header: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(body)
}).then(function (response) {
console.log('Response from fetch:', response)
initialUser = response.user
loggedin = true;
}).catch(function (err) {
console.log('An error has occurred -', err)
})
// setting the redux store to show the thank you page)
// new code to store redux state with login authentication details?
const store = createStore(combineForms({
user: initialUser, //obj with ALL user data coming back from the response
loggedin: loggedin, // true if logged in success -- this will control header menu appearance and redirection handling -- I want to store the "authentication session"
}));
}
Каков наилучший способ справиться с этим?
я могу создать что-то вроде следующего
Папка состояния - и скажите мне, если это необходимо или почему и т. Д.
//state/actions.js
export const SET_USER = 'SET_USER '
export const GET_USER_DATA = 'GET_USER_DATA '
//state/actionCreators.js
import { SET_LANGUAGE, GET_LANG_DATA } from './actions'
export function setUser (user) {
return { type: SET_USER , user}
}
export function getUserData (userData) {
return { type: GET_USER_DATA , userData }
}
//state/reducers.js
import { SET_USER , GET_USER_DATA } from './actions'
const DEFAULT_STATE = {
user: '',
userData: {}
}
const getUserData = (state, action) => {
const newState = {}
Object.assign(newState, state, {userData: action.userData})
return newState
}
const setUser = (state, action) => {
const newState = {}
Object.assign(newState, state, {user: action.user})
return newState
}
const rootReducer = (state = DEFAULT_STATE, action) => {
switch (action.type) {
case SET_USER :
return setUser (state, action)
case GET_USER_DATA :
return getUserData(state, action)
default:
return state
}
}
export default rootReducer
//state/store.js
import { createStore, compose, applyMiddleware } from 'redux'
import thunk from 'redux-thunk'
import rootReducer from './reducers'
const store = createStore(rootReducer, compose(
applyMiddleware(thunk),
typeof window === 'object' && typeof window.devToolsExtension !== 'undefined' ? window.devToolsExtension() : (f) => f
))
export default store
сейчас у меня есть папка редуктора - и сейчас она выглядит так.
//reducers/rootReducer.js
import { combineReducers } from 'redux'
import { reducer as formReducer } from 'redux-form'
const rootReducer = combineReducers({
form: formReducer,
})
export default rootReducer
теперь - это только для общей формы - я могу сделать форму: formReducer для различных форм? форма: loginFormReduder - форма: registerFormReducer - форма: ForgotPasswordReducer
- это где я должен изменить, чтобы обрабатывать скрытые пользовательские данные?
import { combineReducers } from 'redux'
import { reducer as formReducer } from 'redux-form'
import isLoggedIn from './reducer_loggedIn'
import userData from './reducer_userData'
const rootReducer = combineReducers({
userData: userData,
isLoggedIn: isLoggedIn,
form: formReducer
})
export default rootReducer
=============
// действия / action_isLoggedIn
export const ISLOGGEDIN = 'ISLOGGEDIN '
export function isLoggedIn (isLoggedIn) {
// isLoggedIn is an ActionCreator that needs to return an action
// an object with a type property
return {
type: ISLOGGEDIN ,
payload: isLoggedIn
}
}
// редукторы / reducer_loggedIn
import { ISLOGGEDIN } from '../actions/action_isLoggedIn'
export function isLoggedIn (state = null, action) {
switch (action.type) {
case ISLOGGEDIN :
return action.payload
}
return state
}
================= тогда один для userData?
// действия / action_userData
export const USERDATA = 'USERDATA'
export function userData (userData) {
// userData is an ActionCreator that needs to return an action
// an object with a type property
return {
type: USERDATA ,
payload: userData
}
}
// редукторы / reducer_userData
import { USERDATA } from '../actions/action_userData'
export function userData (state = null, action) {
switch (action.type) {
case USERDATA :
return action.payload
}
return state
}