ars-react
Version:
Making React and Redux and React router dom easy to use and make with ARS react
40 lines (36 loc) • 1.18 kB
JavaScript
import {useEffect} from "react";
import {connect} from "react-redux";
ars.load_module = function (url_with_data, component) {
if (typeof component !== "function")
throw new Error("ars.load_module did not found it's react component!");
let dataLoader = {};
let data_to_pass = {data: {}};
let apiData = undefined;
let apiURL = undefined;
if (typeof url_with_data === "object") {
apiData = url_with_data["data"];
apiURL = url_with_data["url"];
}else{
apiURL = url_with_data["url"];
}
dataLoader = () => async (dispatch) => {
try {
const res = await ars.post(apiURL, apiData);
data_to_pass = {data: res.data};
} catch (e) {
data_to_pass = {error: e.response};
}
dispatch({type: "ars"})
}
return connect(
(state) => (data_to_pass),
{dataLoader}
)((props) => {
if (props.dataLoader && typeof props.dataLoader === "function") {
useEffect(() => {
props.dataLoader();
}, []);
}
return component(props);
});
};