在下面的示例中,从Firebase获取数据后,我想添加已存在于redux存储中的用户对象,并将其附加到所有消息对象中。要求您的帮助。
db.collection(`messages/${documentId}/chat`)
.get()
.then(snapshot => {
const messages = [];
snapshot.docs.forEach(doc => {
console.log("message", doc.id, doc.data());
messages.push({
id: doc.id,
from: doc.data().from,
to: doc.data().to,
text: doc.data().text,
timestamp: doc.data().timestamp.seconds * 1000
});
});
dispatch({ type: GET_CHAT, payload: messages });
});
答案 0 :(得分:1)
简单地。 从“ ..path / to / your / createStore / export”导入商店。
然后在动作内部或无法使用redux的connect方法订阅组件的任何地方使用它。
store.getState()//将返回整个商店对象。
其他有用的方法来分派动作; store.dispatch(动作名称)。
最后,在紧急情况下应使用soter.getState()。 为您的用例。 大多数情况下,我们使用动作参数。并将数据作为动作参数传递。我们从那里派遣行动。来自订阅了redux store的某个组件。在那里,我们将通过mapStateToProps方法访问存储对象。
export const successBuy = data => {
let request = axios
.post(`/api/users/successBuy`, data)
.then(response => response.data);
return {
type: actionTypes.SET_CURRENT_USER,
payload: request
};
};
答案 1 :(得分:1)
如果您使用Redux Thunk中间件,则可以简单地做到这一点:
const myAction = () => async (dispatch, getState) => {
const { field1, field2 } = getState().myReducer;
};