未捕获(承诺)TypeError:_this3.setState不是函数

时间:2018-09-22 09:18:20

标签: javascript reactjs setstate

在reactjs中将数据设置为状态时,我遇到了错误,

场景:将数据从子组件传递到父组件,在子组件中,我正在调用父函数并使用setstate更改状态值,

ChildComponent

search(){
        var input = this.refs.userInput.value;
        this.props.findSearch(input);
        input.value = '';       
    }

父项:

findSearch(input){
  axios.get(`http://localhost:3000/blogs`)
  .then(res => {
    input = input.toLowerCase();
    let rest = res.data.filter((e)=>{    
      e.cardtitle === input;
    });
    this.setState({result:rest}); // here I am getting the error
  })
}

能帮我个忙吗?

2 个答案:

答案 0 :(得分:1)

在您的react组件中将函数绑定到此上下文。

constructor(props) {
  super(props);
  this.findSearch = this.findSearch.bind(this);
}

答案 1 :(得分:1)

似乎像this context related issue

您应该将bind的函数与class一起this或只使用箭头函数作为类字段来获取this的词法上下文:

findSearch = (input) => {
  axios.get(`http://localhost:3000/blogs`)
  .then(res => {
    input = input.toLowerCase();
    let rest = res.data.filter((e)=>{    
      e.cardtitle === input;
    });
    this.setState({result:rest}); // here I am getting the error
  })
}

请注意,班级字段是第3阶段的提案,您可能需要添加babel-plugin-transform-class-properties