const github = {
state: {
users: [],
isLoading: false,
}, // initial state
reducers: {
requestUsers(state) {
return {
users: [],
isLoading: true,
};
},
receiveUsers(state, payload) {
return {
isLoading: false,
users: payload,
};
},
},
effects: {
// handle state changes with impure functions.
// use async/await for async actions
async fetchUsers() {
try {
this.requestUsers();
const response = await fetch("https://api.github.com/users");
const users = await response.json();
this.receiveUsers(users);
return users;
} catch (err) {
console.log(err);
this.receiveUsers([]);
}
},
},
};
export default github;