Состояние Redux не сохраняется - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь сбросить пароль пользователя (забыть пароль)

, для этого я делаю

  1. Получение электронной почты пользователя (настройка электронной почты в магазине redux store)

  2. Отправка ссылки на это письмо

  3. По этой ссылке получается новый пароль (электронная почта из магазина redux)

Проблема в том, чточто после настройки электронной почты в избыточном хранилище я не могу получить это значение из хранилища, когда открываю ссылку, отправленную на почту.

В моем магазине отображаются другие значения по этой ссылке, но не адрес электронной почты, который я сразу установилдо 2-го шага

1-й этап получения адреса электронной почты от пользователя

....

            this.props.setEmail(this.state.email)
axios.post('/forgetEmail/',{"email":this.state.email})
                .then((res)=>{
                console.log(res)
            })
....

var mapDispatchToProps = (dispatch)=>{
    return{
        setEmail:(data)=>dispatch({type:'SET_USER_EMAIL',payload:data})
    }
}

export default connect((state)=>{return state},mapDispatchToProps)(Footer)

Мой редуктор

import jwt from 'jsonwebtoken'
import axios from 'axios'

export default function AuthReducer(state={isAuth:false},action){



 ...
else if(action.type === 'SET_USER_EMAIL'){
            console.log("dsdasd")
            console.log("seting email",action.payload)
            return Object.assign({},state,{email:action.payload})
        }
        return state
    }

запрашивающий

Router.get('/passWordForget/:param1',(reqs,resp)=>{
    console.log("heh")
    console.log(reqs.params)
    resp.statusCode = 302;
    var token = reqs.params.param1

    jwt.verify(token,"aseceratetoken",(err,decoded)=>{
        if(err){
            resp.setHeader("Location", `http://localhost:3000/`);
        }else{
            reqs.cookie('vstring',token)
            resp.setHeader("Location", `http://localhost:3000/#/newPassword/`);
        }   
    })
  resp.end();
})

получение нового пароля (здесь this.state.user.email не определен )

constructor(props){
            super(props)



        this.state = {
            email:this.props.user.email,
            password:'',
            passwordVerify:''
        }
        this.handleChange = this.handleChange.bind(this)
        this.handleSubmit = this.handleSubmit.bind(this)
    }
var mapStateToProps = (state)=>{
    return {
        user:state.Auth
    }
}

export default connect(mapStateToProps)(NewPass

)

файл моего редуктора комбайна / rootReducer

import {createStore, combineReducers} from 'redux'

import Auth from './Auth.js'
import {loadState} from './loadState.js'

const presistState = loadState()

var rootReducer = combineReducers({
    Auth
})

export default rootReducer

Я потратил огромное время на поиск решения любогопомощь приветствуется.

1 Ответ

0 голосов
/ 11 мая 2018

Вы используете combineReducers для объединения всех редукторов.

Вместо user:state.Auth должно быть user:state.Auth.email

var mapStateToProps = (state)=>{
        return {
            user:state.Auth.email // put email here with reducers key
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...