终极版+阵营+火力点:如何在更新时使用的状态(Redux + React + FireBase: h

2019-09-28 16:40发布

您好球员和女孩:)

我开始与火力地堡&&终极版,我有与回调一些问题on的-功能firebase.database().ref()的公式推中

function getAll() {

    const uid = JSON.parse(localStorage.getItem('user'))
        .uid;


    const dbRef = firebase.database()
        .ref().child('events');

    const userRef = dbRef.child(uid);

    let answer = [];

    userRef.on('value', snap => {
        let rx = snap.val();
        for (let item in snap.val()) {
            answer.push(rx[ item ]);
        }
    });

    return Promise.resolve({
        events: answer
    });
}

我在干什么?

我创建了之前的一些行为(触发)来调用这个服务,这种方法的结果之前,必须用火在减速保存store

这是预期。 但是 ,...

什么是我的实际现实?

  • 在时间的方法火灾,良好的新:-) 但是
  • callback (因为它是)后(触发一些秒11.5s ),而redux本身,非常快的单元,火灾和使反应呈现在同一时间。 总之,火力回调还给值前的分量被呈现地段。

在最后的话,我需要呈现,重新加载页面,更改为使保存的更改可以应用到渲染应用的另一种途径。

由于我与终极版火力点开始,我不是100%但只有70%确定这扣减的,但他们是我可以在这种情况下,已经找到了更佳。

什么是那么情况?

现在我饿了任何帮助,并感谢您的帮助,您能提供给我:)

Answer 1:

嗨,老兄,我开始与火力地堡今年一月做了整个项目,我知道寻找信息的斗争。

回答你的问题是你需要使用的传奇故事。

https://github.com/redux-saga/redux-saga

传奇是同步您的API调用,所以你的减速调度行动,使得它可以控制同步API调用之前,他们被称为一种方式。

例如,

function* addAnswer{
    const user = yield call(Api.addAnswer, action.payload.userId); 
    yield put({type: "REQUEST_USER_ANSWER_SUCCEEDED", user: user});
}

传奇故事将等待呼叫产量结束后再继续。 然后你绑定此功能的作用。

function* mySaga() {
    yield takeEvery("REQUEST_USER_ANSWER", fetchUser);
}

而你添加到您的商店的终极版,传奇中间件

const sagaMiddleware = createSagaMiddleware() // mount it on the Store const store = createStore( reducer, applyMiddleware(sagaMiddleware) )

基本上,每个你回答,你想被绑定到,然后如果成功,会触发你想得太绑定您的减速器REQUEST_USER_ANSWER_SUCCEEDED传奇动作REQUEST_USER_ANSWER时间发生了什么这里。 你知道的减速器这样只触发如果API调用完成并取得成功。

人们要么使用佐贺或咚在他们的项目提供相同的工作,但你是绝对需要的人之一。



文章来源: Redux + React + FireBase: how to use a state when updating