根据另一个字段的值禁用一个字段
Disable a field based on another field's value
我正在尝试实现一项基本功能,以根据另一个字段的值禁用一个字段。这是代码示例:
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>
)
};
};
当我运行给定的代码i运行变成下面的错误TypeError: undefined is not an object (evaluating 'this.state.options')
。
这是一个非常基本的例子,因为我还是个新手,我正试图理解这个代码示例是如何工作的。
任何帮助表示赞赏。
谢谢
es6 classes 不会自动绑定,如果您使用 属性 初始化程序,它将 this
范围限定为您的 class:
onChange = (value) => {
//
}
我正在尝试实现一项基本功能,以根据另一个字段的值禁用一个字段。这是代码示例:
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>
)
};
};
当我运行给定的代码i运行变成下面的错误TypeError: undefined is not an object (evaluating 'this.state.options')
。
这是一个非常基本的例子,因为我还是个新手,我正试图理解这个代码示例是如何工作的。
任何帮助表示赞赏。
谢谢
es6 classes 不会自动绑定,如果您使用 属性 初始化程序,它将 this
范围限定为您的 class:
onChange = (value) => {
//
}