Multiple dispatch in componentDidMount












1















I want to make multiple request in componentdidmount right now this is what i am doing,



componentDidMount() {
const {
getVehicleGroup,
getDrivers,
getFuelTypes,
getUnassignedDevices,
getCarMake
} = this.props;
getVehicleGroup();
getDrivers();
getFuelTypes();
getUnassignedDevices();
getCarMake();
}


and saga is attached with all these actions. Now i want to run another function but only when these requests. This is something i am looking for



Promise.all([getVehicleGroup, getDrivers, getFuelTypes, getUnassignedDevices, getCarMake])
.then(anotherFunction)


Here is my mapDispatch



const mapDispatchToProps = (dispatch) => ({
getVehicleGroup: () => dispatch(vehicleGroupRequest()),
getDrivers: () => dispatch(driverRequest()),
getFuelTypes: () => dispatch(fuelTypeRequest()),
getCarMake: () => dispatch(carMakeRequest()),
getUnassignedDevices: () => dispatch(unassignedDevicesRequest()),
updateCurrentDriver: () => dispatch(change('addVehicleForm', 'FK_driver_id', )),
onSubmitForm: () => dispatch(addVehicleRequest())
});









share|improve this question





























    1















    I want to make multiple request in componentdidmount right now this is what i am doing,



    componentDidMount() {
    const {
    getVehicleGroup,
    getDrivers,
    getFuelTypes,
    getUnassignedDevices,
    getCarMake
    } = this.props;
    getVehicleGroup();
    getDrivers();
    getFuelTypes();
    getUnassignedDevices();
    getCarMake();
    }


    and saga is attached with all these actions. Now i want to run another function but only when these requests. This is something i am looking for



    Promise.all([getVehicleGroup, getDrivers, getFuelTypes, getUnassignedDevices, getCarMake])
    .then(anotherFunction)


    Here is my mapDispatch



    const mapDispatchToProps = (dispatch) => ({
    getVehicleGroup: () => dispatch(vehicleGroupRequest()),
    getDrivers: () => dispatch(driverRequest()),
    getFuelTypes: () => dispatch(fuelTypeRequest()),
    getCarMake: () => dispatch(carMakeRequest()),
    getUnassignedDevices: () => dispatch(unassignedDevicesRequest()),
    updateCurrentDriver: () => dispatch(change('addVehicleForm', 'FK_driver_id', )),
    onSubmitForm: () => dispatch(addVehicleRequest())
    });









    share|improve this question



























      1












      1








      1








      I want to make multiple request in componentdidmount right now this is what i am doing,



      componentDidMount() {
      const {
      getVehicleGroup,
      getDrivers,
      getFuelTypes,
      getUnassignedDevices,
      getCarMake
      } = this.props;
      getVehicleGroup();
      getDrivers();
      getFuelTypes();
      getUnassignedDevices();
      getCarMake();
      }


      and saga is attached with all these actions. Now i want to run another function but only when these requests. This is something i am looking for



      Promise.all([getVehicleGroup, getDrivers, getFuelTypes, getUnassignedDevices, getCarMake])
      .then(anotherFunction)


      Here is my mapDispatch



      const mapDispatchToProps = (dispatch) => ({
      getVehicleGroup: () => dispatch(vehicleGroupRequest()),
      getDrivers: () => dispatch(driverRequest()),
      getFuelTypes: () => dispatch(fuelTypeRequest()),
      getCarMake: () => dispatch(carMakeRequest()),
      getUnassignedDevices: () => dispatch(unassignedDevicesRequest()),
      updateCurrentDriver: () => dispatch(change('addVehicleForm', 'FK_driver_id', )),
      onSubmitForm: () => dispatch(addVehicleRequest())
      });









      share|improve this question
















      I want to make multiple request in componentdidmount right now this is what i am doing,



      componentDidMount() {
      const {
      getVehicleGroup,
      getDrivers,
      getFuelTypes,
      getUnassignedDevices,
      getCarMake
      } = this.props;
      getVehicleGroup();
      getDrivers();
      getFuelTypes();
      getUnassignedDevices();
      getCarMake();
      }


      and saga is attached with all these actions. Now i want to run another function but only when these requests. This is something i am looking for



      Promise.all([getVehicleGroup, getDrivers, getFuelTypes, getUnassignedDevices, getCarMake])
      .then(anotherFunction)


      Here is my mapDispatch



      const mapDispatchToProps = (dispatch) => ({
      getVehicleGroup: () => dispatch(vehicleGroupRequest()),
      getDrivers: () => dispatch(driverRequest()),
      getFuelTypes: () => dispatch(fuelTypeRequest()),
      getCarMake: () => dispatch(carMakeRequest()),
      getUnassignedDevices: () => dispatch(unassignedDevicesRequest()),
      updateCurrentDriver: () => dispatch(change('addVehicleForm', 'FK_driver_id', )),
      onSubmitForm: () => dispatch(addVehicleRequest())
      });






      reactjs redux redux-saga






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 20 '18 at 15:49









      Dario

      3,21552432




      3,21552432










      asked Nov 20 '18 at 8:12









      Adil LiaqatAdil Liaqat

      1317




      1317
























          2 Answers
          2






          active

          oldest

          votes


















          0














          Although I mostly use redux thunk, I think it should be similar in your case.
          Try to do the following in your mapDispatch function:



           getVehicleGroup: () => async dispatch(vehicleGroupRequest())


          Async functions wrap as promises and behave mostly the same, allowing you to do something like:
          Promise.All().then(nextAction)






          share|improve this answer































            0














            IMHO the two most "neat" ways are:




            • with pure sagas: you dispatch one more action to start a saga that take all the actions you want to wait before starting the anotherFunction (but, depending on what you want to do with anotherFunction it could be useless)


            • you can use redux-saga-thunk to get a promise from every saga you are starting and gain all the advantages of redux-thunk. I haven't used it directly but I'll do as soon as I need to do something similar







            share|improve this answer
























            • Actually what i am doing is loading the form, it has multiple dropdowns like Vehicle group, fuel types etc, i want to know that the form is fully loaded and all dropdowns are populated, because i want to use the same form for edit and i only want to get the record only if form is completed loaded.

              – Adil Liaqat
              Nov 22 '18 at 12:47











            • Ok so my first solution could match your goal or you could use or, alternatively, you could use mergeProps (the third Redux's connect parameter) to add one more prop to your component once all the loaded lists are ready. Prepare me a running Github repo and I'll take a look

              – NoriSte
              Nov 22 '18 at 16:58













            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53388708%2fmultiple-dispatch-in-componentdidmount%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            Although I mostly use redux thunk, I think it should be similar in your case.
            Try to do the following in your mapDispatch function:



             getVehicleGroup: () => async dispatch(vehicleGroupRequest())


            Async functions wrap as promises and behave mostly the same, allowing you to do something like:
            Promise.All().then(nextAction)






            share|improve this answer




























              0














              Although I mostly use redux thunk, I think it should be similar in your case.
              Try to do the following in your mapDispatch function:



               getVehicleGroup: () => async dispatch(vehicleGroupRequest())


              Async functions wrap as promises and behave mostly the same, allowing you to do something like:
              Promise.All().then(nextAction)






              share|improve this answer


























                0












                0








                0







                Although I mostly use redux thunk, I think it should be similar in your case.
                Try to do the following in your mapDispatch function:



                 getVehicleGroup: () => async dispatch(vehicleGroupRequest())


                Async functions wrap as promises and behave mostly the same, allowing you to do something like:
                Promise.All().then(nextAction)






                share|improve this answer













                Although I mostly use redux thunk, I think it should be similar in your case.
                Try to do the following in your mapDispatch function:



                 getVehicleGroup: () => async dispatch(vehicleGroupRequest())


                Async functions wrap as promises and behave mostly the same, allowing you to do something like:
                Promise.All().then(nextAction)







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 20 '18 at 9:18









                NealNeal

                298111




                298111

























                    0














                    IMHO the two most "neat" ways are:




                    • with pure sagas: you dispatch one more action to start a saga that take all the actions you want to wait before starting the anotherFunction (but, depending on what you want to do with anotherFunction it could be useless)


                    • you can use redux-saga-thunk to get a promise from every saga you are starting and gain all the advantages of redux-thunk. I haven't used it directly but I'll do as soon as I need to do something similar







                    share|improve this answer
























                    • Actually what i am doing is loading the form, it has multiple dropdowns like Vehicle group, fuel types etc, i want to know that the form is fully loaded and all dropdowns are populated, because i want to use the same form for edit and i only want to get the record only if form is completed loaded.

                      – Adil Liaqat
                      Nov 22 '18 at 12:47











                    • Ok so my first solution could match your goal or you could use or, alternatively, you could use mergeProps (the third Redux's connect parameter) to add one more prop to your component once all the loaded lists are ready. Prepare me a running Github repo and I'll take a look

                      – NoriSte
                      Nov 22 '18 at 16:58


















                    0














                    IMHO the two most "neat" ways are:




                    • with pure sagas: you dispatch one more action to start a saga that take all the actions you want to wait before starting the anotherFunction (but, depending on what you want to do with anotherFunction it could be useless)


                    • you can use redux-saga-thunk to get a promise from every saga you are starting and gain all the advantages of redux-thunk. I haven't used it directly but I'll do as soon as I need to do something similar







                    share|improve this answer
























                    • Actually what i am doing is loading the form, it has multiple dropdowns like Vehicle group, fuel types etc, i want to know that the form is fully loaded and all dropdowns are populated, because i want to use the same form for edit and i only want to get the record only if form is completed loaded.

                      – Adil Liaqat
                      Nov 22 '18 at 12:47











                    • Ok so my first solution could match your goal or you could use or, alternatively, you could use mergeProps (the third Redux's connect parameter) to add one more prop to your component once all the loaded lists are ready. Prepare me a running Github repo and I'll take a look

                      – NoriSte
                      Nov 22 '18 at 16:58
















                    0












                    0








                    0







                    IMHO the two most "neat" ways are:




                    • with pure sagas: you dispatch one more action to start a saga that take all the actions you want to wait before starting the anotherFunction (but, depending on what you want to do with anotherFunction it could be useless)


                    • you can use redux-saga-thunk to get a promise from every saga you are starting and gain all the advantages of redux-thunk. I haven't used it directly but I'll do as soon as I need to do something similar







                    share|improve this answer













                    IMHO the two most "neat" ways are:




                    • with pure sagas: you dispatch one more action to start a saga that take all the actions you want to wait before starting the anotherFunction (but, depending on what you want to do with anotherFunction it could be useless)


                    • you can use redux-saga-thunk to get a promise from every saga you are starting and gain all the advantages of redux-thunk. I haven't used it directly but I'll do as soon as I need to do something similar








                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered Nov 22 '18 at 7:46









                    NoriSteNoriSte

                    78657




                    78657













                    • Actually what i am doing is loading the form, it has multiple dropdowns like Vehicle group, fuel types etc, i want to know that the form is fully loaded and all dropdowns are populated, because i want to use the same form for edit and i only want to get the record only if form is completed loaded.

                      – Adil Liaqat
                      Nov 22 '18 at 12:47











                    • Ok so my first solution could match your goal or you could use or, alternatively, you could use mergeProps (the third Redux's connect parameter) to add one more prop to your component once all the loaded lists are ready. Prepare me a running Github repo and I'll take a look

                      – NoriSte
                      Nov 22 '18 at 16:58





















                    • Actually what i am doing is loading the form, it has multiple dropdowns like Vehicle group, fuel types etc, i want to know that the form is fully loaded and all dropdowns are populated, because i want to use the same form for edit and i only want to get the record only if form is completed loaded.

                      – Adil Liaqat
                      Nov 22 '18 at 12:47











                    • Ok so my first solution could match your goal or you could use or, alternatively, you could use mergeProps (the third Redux's connect parameter) to add one more prop to your component once all the loaded lists are ready. Prepare me a running Github repo and I'll take a look

                      – NoriSte
                      Nov 22 '18 at 16:58



















                    Actually what i am doing is loading the form, it has multiple dropdowns like Vehicle group, fuel types etc, i want to know that the form is fully loaded and all dropdowns are populated, because i want to use the same form for edit and i only want to get the record only if form is completed loaded.

                    – Adil Liaqat
                    Nov 22 '18 at 12:47





                    Actually what i am doing is loading the form, it has multiple dropdowns like Vehicle group, fuel types etc, i want to know that the form is fully loaded and all dropdowns are populated, because i want to use the same form for edit and i only want to get the record only if form is completed loaded.

                    – Adil Liaqat
                    Nov 22 '18 at 12:47













                    Ok so my first solution could match your goal or you could use or, alternatively, you could use mergeProps (the third Redux's connect parameter) to add one more prop to your component once all the loaded lists are ready. Prepare me a running Github repo and I'll take a look

                    – NoriSte
                    Nov 22 '18 at 16:58







                    Ok so my first solution could match your goal or you could use or, alternatively, you could use mergeProps (the third Redux's connect parameter) to add one more prop to your component once all the loaded lists are ready. Prepare me a running Github repo and I'll take a look

                    – NoriSte
                    Nov 22 '18 at 16:58




















                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53388708%2fmultiple-dispatch-in-componentdidmount%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Guess what letter conforming each word

                    Port of Spain

                    Run scheduled task as local user group (not BUILTIN)