Hello I'm having a hard time wrapping my head around on the use of React and Redux to access data from and API, can some one give me a bit of guidance, as of now I just would like to display the small piece of data in App.js to see how it works for now. Any help would be greatly appreciated thank you.
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import {Provider} from 'react-redux'
import {createStore, applyMiddleware, compose} from 'redux';
import thunk from 'redux-thunk'
import {reducers} from './reducers'
import App from './App';
const store = createStore(reducers, compose(applyMiddleware(thunk)));
ReactDOM.render(
<Provider store = {store}>
<App />
</Provider>,
document.getElementById('root')
);
App.js
import React, { useEffect, useState } from "react";
import { useDispatch, useSelector } from "react-redux";
import { getData } from "./actions/actions";
const App = () => {
const [title, setTitle] = useState(0);
const [description, setDescription] = useState(0);
const dispatch = useDispatch();
useEffect(() => {
dispatch(getData());
}, [title, dispatch]);
return (
<div className="App">
<h1>Hello</h1>
{/* {posts.map((post)=>(
<h1>{post.title}</h1>
))} */}
{/* Trying to display title and description */}
<h1>{title.title}</h1>
<h1>{description.description}</h1>
</div>
);
};
export default App;
Actions/actions.js
import * as api from "../api/index"
export const getData = () => async(dispatch) => {
try {
const {data} = await api.fetchData();
dispatch({ type: 'FETCH', payload: data });
} catch(error) {
console.log(error.message);
}
};
Reducers/data.js
export default (data = [], action) => {
switch (action.type) {
case "FETCH":
return action.payload;
default:
return data;
}
};
Reducers/index.js
import { combineReducers } from 'redux';
import data from "./data";
export const reducers = combineReducers({ data })
API
import axios from "axios";
const url = "http://localhost:5000/routes";
export const fetchData = () => axios.get(url);
Theres only one piece of data in the database right now which is Title and description.
reduxtoolkit to show your data