【问题标题】:React Native, setting value of item in state incorrectlyReact Native,设置状态项的值不正确
【发布时间】:2016-03-09 22:27:56
【问题描述】:
    constructor(props) {
            super(props);
            this.state = {
              message: "..",
            };
    }
    render() {
      return (
          <View style={styles.container}>

            <View style={styles.textInput}>

              <TextInput onChangeText={(message) => this.setState({message})} placeholder="Enter your message..." style={styles.text}/>

              <TouchableHighlight style={styles.button} onPress={this.submit}>

                <Text ref="message" onPress={this.submit}>Submit</Text>

              </TouchableHighlight>

            </View>

          </View>
        )
    }

    loadData(){
      AlertIOS.alert(this.state.message);
    }
    componentDidMount(){
      this.loadData()
    }
    submit(){
      AlertIOS.alert(this.state.message);
    }

第一次调用loadData时,显示message的当前值:“..”

当我的submit 函数被调用时,它会抛出一个错误:undefined is not an object (evaluating 'this.state.message')

我假设是我的 onChangeText 属性将消息设置为未定义,但我不确定为什么。

【问题讨论】:

    标签: javascript react-native


    【解决方案1】:

    问题是this 没有正确绑定到submit()

    在您的构造函数中,尝试添加以下行:

    this.submit = this.submit.bind(this);

    【讨论】:

    • 所以每当我想使用this 访问我的状态时,我需要绑定我的每个函数?
    • @user3890432 我相信这仅在您使用函数作为回调时才有必要,例如您使用onPress={this.submit}。您还可以像 onPress={this.submit.bind(this)} 那样进行一次性绑定,如果您只想在一个位置使用回调,这很有用,就像您正在做的那样。
    猜你喜欢
    • 2023-01-16
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2021-05-19
    相关资源
    最近更新 更多