Javascript react native onChangeText此值未定义

Javascript react native onChangeText此值未定义,javascript,react-native,Javascript,React Native,我正在向文本输入添加简单的屏蔽,因此我的DOB字段中的日期看起来像DD/MM/YYYY 我有一个函数来处理: dateFormat(text) { if (text.match(/^\d{2}$/) !== null) { this.value = text + '/'; } else if (text.match(/^\d{2}\/\d{2}$/) !== null) { this.value = text + '/'; } this.setState({bir

我正在向文本输入添加简单的屏蔽,因此我的DOB字段中的日期看起来像DD/MM/YYYY

我有一个函数来处理:

dateFormat(text) {
  if (text.match(/^\d{2}$/) !== null) {
    this.value = text + '/';
  } else if (text.match(/^\d{2}\/\d{2}$/) !== null) {
    this.value = text + '/';
  }
  this.setState({birthdate: this.value});
}
我将此函数称为:

onChangeText={(text) => this.dateFormat(text)}
文本传递正确。但是,this.value是未定义的,将其设置为任意值都没有区别


我做错了什么?

我认为您不需要将其引用为此。值,只需声明一个var值=文本:

  onChangeText(text){
    if (text.match(/^\d{2}$/) !== null) {
     var value = text + '/';
     this.setState({birthdate: value})
    } else if (text.match(/^\d{2}\/\d{2}$/) !== null) {
      var value = text + '/';
      this.setState({birthdate: value});
    } else {this.setState({birthdate:text})}
  }
我在RNPlay上设置了它,它似乎工作得很好:

“严格使用”;
var React=require('React-native');
变量{
评估学,
样式表,
文本,
看法
文本输入框
}=反应;
var SampleApp=React.createClass({
getInitialState(){
返回{
出生日期:''
}
},
onChangeText(文本){
if(text.match(/^\d{2}$/)!==null){
变量值=文本+'/';
this.setState({birthdate:value})
}else if(text.match(/^\d{2}\/\d{2}$/)!==null){
变量值=文本+'/';
this.setState({birthdate:value});
}else{this.setState({birthdate:text})}
},
render:function(){
返回(
this.onChangeText(text)}
style={style.textInput}
/>
{this.state.birthdate}
);
}
});
var styles=StyleSheet.create({
容器:{
弹性:1,
玛金托普:60
},
文本输入:{
身高:70,
背景颜色:“#ddd”
}
});
AppRegistry.registerComponent('SampleApp',()=>SampleApp);

感谢您阅读我的问题并尝试提供帮助。我是新来的,所以我可能会感到困惑。我按照我的方式编写代码,因为我假设this.value绑定到TextInput字段的值,我想对其进行扩充。你只要打电话给setState。它是否会改变TextInput控件中显示的内容?你说你的代码行得通。伟大的但是它有什么作用呢。它是否创建输入掩码,或在标签上显示掩码输入的值?它似乎是后者,我不需要。它所做的是每次更改输入值时都更改this.state.birthday的值。它不会改变TextInput控件中显示的内容。如果您想增加绑定到TextInput字段值的值,您只需要向TextInput添加另一个属性,如:value={this.state.birthdate}我已经更新了上面的代码示例以及RNPlay上的示例应用程序。我将接受答案,因为您是对的。它不能立即帮助我,因为我的代码不起作用。我拥有你所做的一切,但无论出于什么原因,我的0.17都无法正常工作。谢谢你抽出时间。
'use strict';

var React = require('react-native');
var {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  TextInput
} = React;

var SampleApp = React.createClass({

  getInitialState(){
    return {
     birthdate: '' 
    }
  },

  onChangeText(text){
    if (text.match(/^\d{2}$/) !== null) {
      var value = text + '/';
      this.setState({birthdate: value})
    } else if (text.match(/^\d{2}\/\d{2}$/) !== null) {
        var value = text + '/';
        this.setState({birthdate: value});
    } else {this.setState({birthdate:text})}
  },

  render: function() {
    return (
      <View style={styles.container}>       
        <TextInput 
          value={this.state.birthdate} 
          onChangeText={ (text) => this.onChangeText(text) } 
          style={styles.textInput} 
          />
        <Text>{this.state.birthdate}</Text>
      </View>
    );
  }
});

var styles = StyleSheet.create({
  container: {
    flex: 1,
    marginTop:60
  },
  textInput: {
    height:70,
    backgroundColor: '#ddd'
  }
});

AppRegistry.registerComponent('SampleApp', () => SampleApp);