On the following very basic project:
https://stackblitz.com/edit/react-history-push-with-function-as-arg?file=src%2Fpages%2FPage1.jsx
I have the following code:
import React from "react";
class Page1 extends React.Component {
constructor(props) {
super(props);
this.state = {
letter: 'A',
};
}
handleSubmit = (e) => {
e.preventDefault();
this.props.history.push({
pathname: '/page2',
state: {
myFunction: () => {
console.log('Cancelling Axios Request!');
},
}
});
return false;
};
render() {
return <>
<form onSubmit={this.handleSubmit}>
<div>You are currently on: Page 1 (Letter: {this.state.letter})</div>
<br />
<button type="submit">SUBMIT</button><br />
</form>
</>;
}
}
export default Page1;
My problem is that I need to pass a function to the Page2
through the call to: this.props.history.push({...})
. For that I'm using: myFunction
inside the state
array (which is normally used to send parameters on the transition).
Side note you can skip: in my real scenario will be a function that will take care of cancelling an Axios
call, especifically with: axios.canceltoken.source().cancel()
. Reference: https://www.pluralsight.com/guides/all-need-to-know-about-axios),
but when transitioning to Page2
I get the following error:
Error: Failed to execute 'pushState' on 'History': () => {
console.log('hello world');
} could not be cloned.
as you can see here:
I know I could save the function on the window
object while on Page1
and use it while on Page2
but I think that's not a good practice. As I said above, my end goal is to be able on Page2
to cancel an Axios
request I started on Page1
.
Is there a way for me to pass that function to Page2
?
Thanks in advance!