我最近开始学习react和redux,并且对于如何同步数据感到困惑?我正在使用create-react-app
和redux-thunk
。
假设我正在做一个todolist。那么我应该在redux中添加一个任务,并使用index.js中的store.subscribe将整个商店更新为firebase吗?
或者我应该更新firebase商店并然后更新redux商店?我认为这将是更好的方法,因为应用程序只会响应firebase存储而移动。 但这种方法会减慢应用程序的重新渲染速度,因为数据更改必须等待异步请求完成,这对慢速Internet连接不利。并会使用户体验变慢。 喜欢这个。
export const startAddTaskAction = (task) => {
return (dispatch, getState) => {
database.ref('tasks').push(task)
.then(() => {
dispatch(addTaskAction(task));
});
};
};
或者我在redux商店和firebase中同时更新两者?但那么如果用户互联网连接失败怎么办? Firebase无法写入自身,但redux会将任务显示为已保存? 喜欢这个:
export const startAddTaskAction = (task) => {
return (dispatch, getState) => {
database.ref('tasks').push(task);
dispatch(addTaskAction(task));
};
};
我应该采用哪种方式,为什么它比其他人更好?
答案 0 :(得分:0)
选择第一个,您应该等到将数据推送到Firebase中,这是最佳做法。
让我解释一下为什么应该以这种方式进行操作的情况
如果根本没有连接可以添加所有任务的用户,但是最后当他重新加载页面时,他会惊讶于根本没有数据。
对于所有对象,我们都使用_id,它是由数据库生成的,如果您不访问服务器,甚至根本不会获得数据。
与其给用户带来不可预测的结果,不如让他等待api放一些时间间隔,这比显示某些消息网络连接速度慢要好些