我无法访问定义为吸气剂的财产。
我已经在console.log记录了提供该属性的所有段,所以我认为getter定义是错误的。
export const messageThreadChecker = (_uid) => (dispatch, getState) => {
chatRef.child(_uid).on('value', snap => {
!snap.exists() && dispatch(finishThreadCheck(false));
dispatch(finishThreadCheck(!snap.val().isActivated ? {
status: 'pending'
} : {
status: 'active',
get payload() {
chatRef.child(snap.val()._tid + '/messages/').orderByKey().limitToLast(1).once('value', (_message) => {
var _lastRef = _.values(_message.val())[0]._id;
userRef.child(snap.val().provider.id)
.once('value').then((snapshot) => {
return {
correspondent: {
name: snapshot.val().name,
avatar: snapshot.val().avatar
},
threadId: snapshot.val()._tid,
lastRef: _lastRef,
}
})
})
}
}))
})
};
尝试访问有效负载属性时,我得到以下信息:
{status:'active',payload:undefined}
答案 0 :(得分:1)
如果getter不返回任何东西,则其属性值未定义。
您的有效载荷getter函数不会返回任何内容,因为它没有return语句。也许您想要这个?
export const messageThreadChecker = (_uid) => (dispatch, getState) => {
chatRef.child(_uid).on('value', snap => {
!snap.exists() && dispatch(finishThreadCheck(false));
dispatch(finishThreadCheck(!snap.val().isActivated ? {
status: 'pending'
} : {
status: 'active',
get payload() {
return chatRef.child(snap.val()._tid + '/messages/').orderByKey().limitToLast(1).once('value', (_message) => {
var _lastRef = _.values(_message.val())[0]._id;
userRef.child(snap.val().provider.id)
.once('value').then((snapshot) => {
return {
correspondent: {
name: snapshot.val().name,
avatar: snapshot.val().avatar
},
threadId: snapshot.val()._tid,
lastRef: _lastRef,
}
})
})
}
}))
})
};