基于另一个字段的值禁用一个字段

3
我正在尝试实现一项基本功能,根据另一个字段的值禁用某个字段。以下是代码示例:
import React from 'react'
import t from "tcomb-form-native";
import {Text, View, TextInput, TouchableHighlight } from 'react-native';

const Form = t.form.Form;

var Type = t.struct({
  disable: t.Boolean, // if true, name field will be disabled
  name: t.String
});

var options = {
  fields: {
    name: {}
  }
};

export default class App extends React.Component {

  constructor(props){
    super(props);
    this.state = {
      options: options,
      value: null
    }
  }

  onChange(value) {
    var newOptions = t.update(this.state.options, {
      fields: {
        name: {
          editable: {'$set': !value.disable}
        }
      }
    });
    this.setState({options: newOptions, value: value});
  }

  onPress() {
    var value = this.refs.form.getValue();
    if (value) {
      console.log(value);
    }
  }

  render() {
    return (
      <View style>
        <Form
          ref="form"
          type={Type}
          options={this.state.options}
          value={this.state.value}
          onChange={this.onChange}
        />
        <TouchableHighlight style onPress={this.onPress} underlayColor='#99d9f4'>
          <Text style>Save</Text>
        </TouchableHighlight>
      </View>
    )
  };

}; 

当我运行给定的代码时,遇到了以下错误:TypeError: undefined is not an object (evaluating 'this.state.options')。这是一个非常基本的示例,因为我还是一个新手,正在尝试了解此代码示例的工作原理。感谢任何帮助。

你在定义options两次。请在onChange方法中更改options变量名。不确定这是否能解决你的问题,但这是一个不好的做法。 - Commodore Timo
我刚刚尝试更改onChange函数中的options变量名称,但遗憾地没有成功。不管怎样,感谢您的回答。 - BigD
1个回答

0

es6类不会自动绑定,如果你使用属性初始化器,它将把this限定在你的类中:

onChange = (value) => {
  //
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接