【问题标题】:React Redux Firebase check if value exist before dispatchReact Redux Firebase 在调度前检查值是否存在
【发布时间】:2017-07-26 16:31:56
【问题描述】:
不知道如何使用redux检查数据是否存在,有人能快速回答吗?
export function fetchName(name) {
return dispatch => {
const guestsRef = database.ref('/guest').set({
name
})
.then(function (snapshot) {
dispatch(setName({
name
}));
});
}
}
此代码只是覆盖相同的条目并清除所有数据。
【问题讨论】:
标签:
reactjs
firebase
firebase-realtime-database
react-redux
【解决方案1】:
const guestRef = database.ref('/guest');
guestRef.once('value', snapshot => {
const guest = snapshot.val();
if(!guest || !guest.name) {
guestRef.set({ name });
}
});
或
try {
const guest = (await database.ref('/guest').once('value')).val();
if(guest == null) {
const updates = { name };
await database.ref('/guest').update(updates);
//await database.ref('/guest').set({ name });
}
} catch (error) {
//error handling
}
【解决方案2】:
如果您想中止特定功能,您可以随时return false。
export function fetchName(name) {
return dispatch => {
const guestsRef = database.ref('/guest').set({
name
})
.then(function (snapshot) {
if ( snashot ) { return false; }
dispatch(setName({
name
}));
});
}
}
这样您就可以避免调用dispatch 并覆盖您的数据。