Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Undefined不是对象(正在计算此.state.input';)_Javascript_Reactjs_React Native_React Redux_Reactjs Flux - Fatal编程技术网

Javascript Undefined不是对象(正在计算此.state.input';)

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

我试图从json文件中读取密钥,并在文本字段中显示其值。用户将在TextInput字段中输入键值。下面是我使用的代码。输入文本并按下提交按钮后,它抛出“Undefined不是对象(计算'this.state.input')”错误。我认为将值绑定/传递给showmaning()函数时存在一些问题。请帮忙

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*”。两个都抛出了模块不可用的错误消息。