I want to run a callback test() from the onClose() function. I tried to find the solution across StackOverflow but I was unable to solve the problem. Running this code gives me undefined errors mentioned in the comments with codeblocks
constructor(props){
super(props)
this.state = {
isPaid: false
}
this.test = this.test.bind(this)
}
test = () =>{
const { isPaid } = this.state
console.log(isPaid)
this.setState({isPaid: true})
}
render() {
const isPaid = this.state
const {test} = this.props
let config = {
"publicKey": "*****",
"productIdentity": "1234567890",
"eventHandler": {
onSuccess (payload) {
console.log(payload);
},
onError (error) {
// handle errors
console.log(error);
},
onClose (){
console.log('widget is closing');
//Want to add some callback here to test()
const {test} = this.props //The issue is here
console.log(test) //getting Undefined
test(); //TypeError: Cannot read property 'test' of undefined
//OR
console.log(isPaid) //I get state as log
this.setState({isPaid: !isPaid}) //TypeError: Cannot read property 'setState' of undefined
}
}
};
let checkout = new paygateway(config);
return (
)
Answer
You're deconstructing test
from this.props and the function doesn't exist in props. It's simply a function you've declared within the component. So, you should just assign test variable to the test function like so:
const test = this.test
No comments:
Post a Comment