Javascript Undefined不是对象(正在计算此.state.input';)
我试图从json文件中读取密钥,并在文本字段中显示其值。用户将在TextInput字段中输入键值。下面是我使用的代码。输入文本并按下提交按钮后,它抛出“Undefined不是对象(计算'this.state.input')”错误。我认为将值绑定/传递给showmaning()函数时存在一些问题。请帮忙Javascript Undefined不是对象(正在计算此.state.input';),javascript,reactjs,react-native,react-redux,reactjs-flux,Javascript,Reactjs,React Native,React Redux,Reactjs Flux,我试图从json文件中读取密钥,并在文本字段中显示其值。用户将在TextInput字段中输入键值。下面是我使用的代码。输入文本并按下提交按钮后,它抛出“Undefined不是对象(计算'this.state.input')”错误。我认为将值绑定/传递给showmaning()函数时存在一些问题。请帮忙 import React, {Component} from 'react'; import {AppRegistry, StyleSheet, Text, TextInput, View} fr
import React, {Component} from 'react';
import {AppRegistry, StyleSheet, Text, TextInput, View} from 'react-native';
var english_german = 'english_german.json';
class Dictionary extends Component {
constructor(props) {
super(props);
this.state = {
input: '',
output: ''
};
}
showMeaning() {
var meaning = this.state.input in english_german ? english_german[this.state.input] : "Not Found";
this.setState({
output: meaning
});
}
render() {
return (
<View style={styles.parent}>
<Text>
Type something in English:
</Text>
<TextInput value={this.state.input}
onChangeText={(input) => this.setState({ input }) }
onSubmitEditing = {this.showMeaning}
/>
<Text style={styles.germanLabel}>
Its German equivalent is:
</Text>
<Text style={styles.germanWord}>
{this.state.output}
</Text>
</View>
);
}
};
var styles = StyleSheet.create({
parent: {
padding: 16
},
germanLabel: {
marginTop: 20,
fontWeight: 'bold'
},
germanWord: {
marginTop: 15,
fontSize: 30,
fontStyle: 'italic'
}
});
AppRegistry.registerComponent('Dictionary', function () {
return Dictionary;
})
import React,{Component}来自'React';
从“react native”导入{AppRegistry,StyleSheet,Text,TextInput,View};
var english_derman='english_derman.json';
类字典扩展组件{
建造师(道具){
超级(道具);
此.state={
输入:“”,
输出:“”
};
}
showmeans(){
var means=this.state.input in english\u derman?english\u derman[this.state.input]:“未找到”;
这是我的国家({
输出:意义
});
}
render(){
返回(
用英语输入:
this.setState({input})}
onSubmitEditing={this.showMeaning}
/>
其德语对应词为:
{this.state.output}
);
}
};
var styles=StyleSheet.create({
家长:{
填充:16
},
德国标签:{
玛金托普:20,
fontWeight:“粗体”
},
德国字:{
玛金托普:15,
尺寸:30,
字体:“斜体”
}
});
AppRegistry.registerComponent('Dictionary',function(){
返回字典;
})
当您调用showMeans
时,它没有绑定到正确的上下文(此
)。您应该选择它或使用带有词法this
的箭头函数,例如:
onSubmitEditing = {() => this.showMeaning()}
调用
showMeans
时,它未绑定到正确的上下文(this
)。您应该选择它或使用带有词法this
的箭头函数,例如:
onSubmitEditing = {() => this.showMeaning()}
正如madox2所说,
showMeans
没有正确地绑定到这个
。这是一个棘手的问题,有几种可能的解决方案,其优缺点在中列出。我认为最干净的是选项5,但这需要使用第2阶段的功能。正如madox2所说,showMeans
没有正确地绑定到此
。这是一个棘手的问题,有几种可能的解决方案,其优缺点在中列出。我认为最干净的是选项5,但这需要使用第二阶段的功能。var english\u derman='english\u derman.json'var english\u derman
必须是文件的内容,而不是名称本身。@leo如何导入json文件的内容?我尝试了require()以及从导入。两个都抛出了模块不可用的错误消息。var english_derman='english_derman.json'var english\u derman
必须是文件的内容,而不是名称本身。@leo如何导入json文件的内容?我尝试了require()以及从导入。两者都抛出了模块不可用的错误消息。或者将其添加到构造函数中this.showmaning=this.showmaning.bind(this)
。我觉得这句话已经说了无数遍了:D看一看。谢谢你的回复。现在它不会显示投标错误消息。但是,看起来内容不是从json加载的。如何导入json文件的内容?我尝试了require()和“import*from*”。两者都抛出了模块不可用的错误消息。或者将其添加到构造函数中this.showmaning=this.showmaning.bind(this)
。我觉得这句话已经说了无数遍了:D看一看。谢谢你的回复。现在它不会显示投标错误消息。但是,看起来内容不是从json加载的。如何导入json文件的内容?我尝试了require()和“import*from*”。两个都抛出了模块不可用的错误消息。