2π
β
In React,
You can pass the data two way most commonly:
1.
- Pass a callback function to from common main to child component.
- When async action is done, execute it with data.
- Give it the data with props to another component.
export default function Bucket({ onGetData }) {
const { slug } = useParams();
const classes = useStyles();
const [data, setData] = useState({ bucket: [] });
useEffect(() => {
axiosInstance.get('bucket/' + slug + '/').then((res) => {
setData({ bucket: res.data });
console.log(res.data);
});
}, [setData, slug]);
const getData = () => {
axiosInstance
.get('bucket/fin-data/' + slug).then((response) => {
onGetData(response);
console.log(response)
})
}
return (
<Container component="main" maxWidth="md">
<CssBaseline />
<div className={classes.paper}></div>
<div className={classes.heroContent}>
{...}
<button onClick={getData}>get data</button>
</div>
</Container>
);
}
export default function MainComponent() {
const [data, setData] = useState({});
const onGetData = (result) => {
setData(result);
};
return (
<MainComponent>
<Bucket onGetData={onGetData} />
<BarChart data={data} />
</MainComponent>
);
}
- You can pass with any state Manager: Redux, Mobx e.g.
Source:stackexchange.com