继续得到这个错误,而试图写一个应用程序与第三方API工作

TypeError:这个。setState不是一个函数

当我试图处理API响应时。我怀疑这个装订有问题,但我不知道怎么修。这是我的组件的代码:

var AppMain = React.createClass({
    getInitialState: function() {
        return{
            FirstName: " "
        };
    },
    componentDidMount:function(){
        VK.init(function(){
            console.info("API initialisation successful");
            VK.api('users.get',{fields: 'photo_50'},function(data){
                if(data.response){
                    this.setState({ //the error happens here
                        FirstName: data.response[0].first_name
                    });
                    console.info(this.state.FirstName);
                }

            });
        }, function(){
        console.info("API initialisation failed");

        }, '5.34');
    },
    render:function(){
        return (
            <div className="appMain">
            <Header  />
            </div>
        );
    }
});

当前回答

I Just Pass Props from child component to the parent component in react native from the child component is pass this.
 const validate = (text) => {
        console.log(text);
        let reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w\w+)+$/;
        if (reg.test(text) === false) {
          console.log("Email is Not Correct");
        
          ({ onChangeText: text })
          return false;
        }
        else {
          // console.log("Email Correct");
          
          props.onchangex(text)<<----------------------- here pass the value to the parent component
          console.log(props.onchangex(text));
          ({ onChangeText: text })
       

        }

 and in parent component i set this value to the state like this
   <InpE
      onchangex={this.propx}<---------- pass the parent function to the child component
      placeholder="Please Enter Email"
          />

propx=(a)=> {
 this.setState({email:a}) <-------- this gives me error TypeError: this.setState is not a function


       {this.state.email=a} <---------------- this line is setting up the state email variable
        
    }

其他回答

这主要是反应体、反应体和酶之间的不相容问题。

尝试像我那样安装以下程序来解决问题:

[...]
    "react": "^18.0.0-beta-f320ef88f-20211116",
    "react-dom": "16.14.0",
    "enzyme": "^3.11.0",
    "enzyme-adapter-react-16": "^1.15.6"
[...]

使用from arrow函数来处理动作。

在我的情况下,问题是我发送的状态和setstate作为道具的子组件,但在setstate有一个打字错误

I Just Pass Props from child component to the parent component in react native from the child component is pass this.
 const validate = (text) => {
        console.log(text);
        let reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w\w+)+$/;
        if (reg.test(text) === false) {
          console.log("Email is Not Correct");
        
          ({ onChangeText: text })
          return false;
        }
        else {
          // console.log("Email Correct");
          
          props.onchangex(text)<<----------------------- here pass the value to the parent component
          console.log(props.onchangex(text));
          ({ onChangeText: text })
       

        }

 and in parent component i set this value to the state like this
   <InpE
      onchangex={this.propx}<---------- pass the parent function to the child component
      placeholder="Please Enter Email"
          />

propx=(a)=> {
 this.setState({email:a}) <-------- this gives me error TypeError: this.setState is not a function


       {this.state.email=a} <---------------- this line is setting up the state email variable
        
    }

使用箭头函数,因为箭头函数指向父作用域,这将是可用的。 (替代绑定技术)