IM检查登录,如果成功的IM发布作业的数据存在....我想从签到动作到另一个动作检索的有效载荷数据。以下是“登入”我的动作代码和减速代码。我想在“createjob”终极版动作来取得
const signin = (cred) => {
return (dispatch, getState, {getFirebase, getFirestore}) => {
const firestore = getFirestore();
var query = firestore.collection('Employers').where("email", "==", cred.email)
query = query.where("password", "==", cred.password)
.get()
.then((querySnapshot) => {
querySnapshot.forEach(function(doc) {
// Check if a document was returned
if(querySnapshot.empty === true) {
dispatch({type: 'SIGN_IN_ERROR', cred});
}
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
email = cred.email
empname=doc.data().FirstName;
dispatch({type:'SIGN_IN', cred, payload:{cred, empname, email}});
history.push('/dashboard')
});
})
.catch((err) => {
console.log("No record");
dispatch({type:'SIGN_IN_ERROR', err});
});
}
};
我减速的代码
const signin = (state = initState, action) => {
switch(action.type){
case 'SIGN_IN':
const empname = action.payload;
console.log('====================================');
console.log(empname, action.cred.email);
console.log('====================================');
return {
...state,
authError : null,
}
case 'SIGN_IN_ERROR':
console.log('sign in error ',action.err);
return {
...state,
authError : 'Login Failed'
}
default:
return state;
}
}
export default signin;
我想在下面的动作来取得
const createJob = (project) => {
return (dispatch, getState, {getFirebase, getFirestore}) => {
const firestore = getFirestore();
const empname = signin.action.payload;
const email = signin.action.payload;
var query = firestore.collection('Employers').where("email", "==", email)
firestore.collection('Jobs').add({
...project,
postedby:empname,
postedon: new Date()
}).then(()=>{
dispatch({type:'CREATE_JOB', project});
}).catch((err)=>{
dispatch({type:'CREATE_JOB_ERROR', err});
})
}
};
你可以写在这种情况下,在调度的作用的任何点可以访问整个商店终极版中间件。
既然你已经调度与SIGN_IN
行动的有效载荷,可以存储使用的getState存储和createJob
的行动,你的数据从的CanRead店净荷
const signin = (state = initState, action) => {
switch(action.type){
case 'SIGN_IN':
const empname = action.payload;
console.log('====================================');
console.log(empname, action.cred.email);
console.log('====================================');
return {
...state,
empname,
authError : null,
}
case 'SIGN_IN_ERROR':
console.log('sign in error ',action.err);
return {
...state,
authError : 'Login Failed'
}
default:
return state;
}
}
export default signin;
const createJob = (project) => {
return (dispatch, getState, {getFirebase, getFirestore}) => {
const firestore = getFirestore();
const empname = getState().signin.empname; // getting from reducer
const email = signin.action.payload;
var query = firestore.collection('Employers').where("email", "==", email)
firestore.collection('Jobs').add({
...project,
postedby:empname,
postedon: new Date()
}).then(()=>{
dispatch({type:'CREATE_JOB', project});
}).catch((err)=>{
dispatch({type:'CREATE_JOB_ERROR', err});
})
}
};