方法无法读取状态

Posted

技术标签:

【中文标题】方法无法读取状态【英文标题】:Method can not read state 【发布时间】:2017-07-21 16:52:16 【问题描述】:

我正在使用 react-native 和解析服务器。我正在实现用户注册,但是出现了这个错误:

undefined 不是对象(评估 'this.state.username')

不应该跨类读取状态吗?

import React, Component from 'react';
import Container, Content, Form, Item, Input, Button, Text from 'native-base';
var Parse = require('parse/react-native');

export default class Singup extends Component 
  constructor(props) 
    super(props);
    this.state = 
      username: '',
      password: ''
    ;
  

  Buttonpress() 
    Parse.initialize("APPLICATION_ID");
    Parse.serverURL = 'http://***.***.**.**:1337/parse'

    var user = new Parse.User();
    user.set("username", this.state.username);
    user.set("password", this.state.password);

    user.signUp(null, 
      success: function(user) 
        console.warn("YES");
      ,
      error: function(user, error) 
        // Show the error message somewhere and let the user try again.
        alert("Error: " + error.code + " " + error.message);
      
    );
  

  render() 
    return (
      <Container>
        <Content>
          <Form>
            <Item>
              <Input
                placeholder="Username"
                onChangeText=(text) => this.setState(username: text)
                value = this.state.username/>
            </Item>
            <Item last>
              <Input
                placeholder="Password"
                onChangeText=(text) => this.setState(password: text)
                value = this.state.password/>
            </Item>
          </Form>
          <Button
            block
            onPress=this.Buttonpress>
            <Text>Inscrever-se</Text>
          </Button>
        </Content>
      </Container>
    );
  

自动翻译。

【问题讨论】:

React setState reusable的可能重复 ButtonPress 函数绑定问题,见副本 这个问题被它的创建者放弃了。没有正确答案。 好的,所以这个问题确实有正确答案***.com/questions/39814235/… 检查这个问题以获得解释***.com/questions/41113798/… 【参考方案1】:

你的函数绑定应该对你有所帮助

  constructor(props) 
    super(props);
    this.state = 
      username: '',
      password: ''
    ;
    this.Buttonpress = this.Buttonpress.bind(this);
  

这是参考:https://facebook.github.io/react/docs/react-without-es6.html#autobinding

【讨论】:

这个问题在 *** 上有多个重复,请考虑将其标记为重复或提供适当的链接而不是回答它, 谢谢!你能给我一个为什么我需要这个的参考吗?我想了解。 This one 是关于绑定变体的。 Mozilla docs

以上是关于方法无法读取状态的主要内容,如果未能解决你的问题,请参考以下文章

出现错误:无法读取未定义的属性状态

TypeError:使用状态时无法读取未定义的属性“0”

无法读取上下文提供程序中的 useReducer 挂钩更新的状态

发布项目时无法读取状态文件“obj\Debug\Helpers.csprojResolveAssemblyReference.cache”错误

sharedpreference无法读取按钮状态

反应:TypeError:无法读取未定义的属性“状态”。需要说明