import { EventsReceiver } from'eventrix';import axios from"axios";// This receiver will help us set data from server to store on load appliactionconstsetInitialStateReceiver=newEventsReceiver('setInitialState', (eventName, eventData, stateManager) => {stateManager.setState('', eventData);});// This receiver will fetch posts dataconstfetchPostsReceiver=newEventsReceiver('fetchPosts', (eventName, eventData, stateManager) => {returnaxios.get('http://localhost:3000/posts.json').then(({ data }) => {stateManager.setState('posts',data.contacts); });});exportdefault [setInitialStateReceiver, fetchPostsReceiver];
Fetch data on server
Export getServerSideProps method in page component and return posts from API.
import eventrix from'../eventrix';/* Here page component code*/exportasyncfunctiongetServerSideProps() {// Fetch data from external APIawaiteventrix.emit(`fetchPosts`);constposts=eventrix.getState('posts');// Pass data to the page via propsreturn { props: { posts } };}
Use Provider
Use EventrixProvider in main component and set initial state from server props.