gpt4 book ai didi

javascript - 使用 redux 时,调用 getter 方法时未定义 'payload' 属性

转载 作者:行者123 更新时间:2023-11-30 19:29:17 27 4
gpt4 key购买 nike

我无法访问我定义为 getter 的属性。

我已经 console.logged 所有提供该属性的段,所以我认为 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,
}
})
})
}
}))
})
};

在尝试访问 payload 属性时,我得到以下信息:

{status:'active',payload:undefined}

最佳答案

如果一个 getter 没有返回任何东西,那么它的属性值是未定义的。

您的负载 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() {
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,
}
})
})
}
}))
})
};

关于javascript - 使用 redux 时,调用 getter 方法时未定义 'payload' 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56600915/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com