问题:
我正在更新Firestore数据库中的子集合,但是更新之后,页面上的数据就没有更新。但在刷新后进行更新。
我现在不知道要尝试什么,因为当我更新集合时(当我的数据在集合上时)确实更新了,而没有刷新页面,但是将数据移到子集合中后,我遇到了问题直到刷新页面后,页面上的数据才会更新。
我有一个列表视图,其中列出了文档列表,然后进入文档的详细信息视图并更新了文档的名称,并且该名称在Firestore数据库中得到了清晰的更新。 但是,当我返回到列表视图时,它就是显示的文档的旧名称。 但是刷新页面后,我得到了新数据。 我在我的应用程序中使用react,redux和firestore。 当我更新Firestore数据库时,我将动作传递给redux并返回状态,但是似乎直到刷新页面后才更新。 并且在将我的数据移至子集合后似乎出现了问题
DetailFileView.js
用于调用更新功能的代码
const mapStateToProps = (state, ownProps) => {
return {
users: state.firestore.ordered.users
}
}
const mapDispatchToProps = (dispatch) => {
return {
UserDataUpdateFileName: (Filename, Id email) => { dispatch(UserDataUpdateFileName (Filename,Id, email)) },
}
}
export default compose(
connect(mapStateToProps, mapDispatchToProps),
firestoreConnect(( props,state) => {
return [
{collection: 'users',
doc:'id',
subcollections: [
{ collection: 'sessions', doc:props.match.params.post_id, storeAs: 'sessions'}
]
}
]
}) )(DetailFileView)
FileList.js
const mapStateToProps = (state) => {
return {
users: state.firestore.ordered.users
}
}
export default compose(
connect(mapStateToProps),
firestoreConnect(props =>{
return [
{collection: 'users',
doc:'id',
subcollections: [
{ collection: 'sessions',orderBy: ['date', 'desc'],storeAs: 'sessions' }
]
}
]}
)(FileList)
RootReducer.js
const userDataReducer = (state = initState, action) => {
switch (action.type) {
case 'UPDATE_FILENAME_DOCUMENTS_ERROR':
console.log('%c update user data filename in documents error',"color:red");
return state;
case 'UPDATE_FILENAME_SESSIONS_SUCCESS':
console.log('%c updated user data filename in sessions success',"color:green");
return state;
default:
return state;
}
}
export default userDataReducer
预期输出: 子集合在firestore中正在更新(正在运行),然后也在listview页面上进行了更新(无需刷新)。
实际输出: 子集合在Firestore中已更新,但直到页面刷新后才更新listview页面上的数据