I am getting the following error
//bundle.js:31367 Uncaught TypeError: this.setState is not a function//
JSX:
The problem is that this
in your case doesn't represent the correct context. Function inside .done()
represents a separate context for itself and thus either you can
1. Add bind(this)
after the .done()
.
constructor(props){
super(props);
this.state={
lis1:[],
}
}
componentDidMount(){
$.ajax({
url:'',
dataType:'json',
cache:false,
}).done(function({data}){
this.setState({
lis1:[data.banner]
});
}.bind(this));
}
2 Or you can assign this
to a separate variable and use that.
constructor(props){
super(props);
this.state={
lis1:[],
}
}
componentDidMount(){
var self = this;
$.ajax({
url:'',
dataType:'json',
cache:false,
}).done(function({data}){
self.setState({
lis1:[data.banner]
})
})
}