Reactjs 在React Native中调用方法
我很难理解什么似乎是一个简单的错误。 当我调用react组件AlarmList中定义的名为addNewAlarm的方法时,该方法调用this.showAlarms()。我认为这不会引起问题,但我得到一个错误Reactjs 在React Native中调用方法,reactjs,react-native,Reactjs,React Native,我很难理解什么似乎是一个简单的错误。 当我调用react组件AlarmList中定义的名为addNewAlarm的方法时,该方法调用this.showAlarms()。我认为这不会引起问题,但我得到一个错误未定义不是函数。这看起来应该非常简单,因为这就是在javascript中调用类方法的方式。我做错了什么 import React, { Component } from 'react'; ... export default class AlarmList extends React.Com
未定义不是函数。这看起来应该非常简单,因为这就是在javascript中调用类方法的方式。我做错了什么
import React, { Component } from 'react';
...
export default class AlarmList extends React.Component {
addNewAlarm() {
this.showAlarms();
}
showAlarms() {
alert('showing alarms');
}
render() {
return (
<View>
<Button
title="Add An Alarm"
onPress={this.addNewAlarm}
/>
</View>
);
}
}
import React,{Component}来自'React';
...
导出默认类AlarmList扩展React.Component{
addNewAlarm(){
this.showAlarms();
}
showAlarms(){
警报(“显示警报”);
}
render(){
返回(
);
}
}
尝试绑定它
<View>
<Button
title="Add An Alarm"
onPress={this.addNewAlarm.bind(this)}
/>
</View>
尝试绑定它
<View>
<Button
title="Add An Alarm"
onPress={this.addNewAlarm.bind(this)}
/>
</View>
您需要将函数声明更改为
addNewAlarm = () => {
this.showAlarms();
}
showAlarms = () => {
alert('showing alarms');
}
或者像这样在构造函数中绑定它
constructor(props) {
super(props);
this.addNewAlarm = this.addNewAlarm.bind(this);
this.showAlarms = this.showAlarms.bind(this);
...
}
希望这有帮助 您需要将函数声明更改为
addNewAlarm = () => {
this.showAlarms();
}
showAlarms = () => {
alert('showing alarms');
}
或者像这样在构造函数中绑定它
constructor(props) {
super(props);
this.addNewAlarm = this.addNewAlarm.bind(this);
this.showAlarms = this.showAlarms.bind(this);
...
}
希望这有帮助 这是因为此上下文中的属于方法而不是类,并且在方法addNewAlarm()中没有定义此类方法。这是词法这个的更一般的问题
你可以用三种方法来解决它(你应该采用第一种方法,如果你不喜欢,那么你应该采用第二种方法)
转换声明
addNewAlarm(){
this.showAlarms();
}
到
让宣言成为现实吧
addNewAlarm(){
this.showAlarms();
}
但是在类中编写一个构造函数
constructor(props) {
super(props)
this.addNewAlarm = this.addNewAlarm.bind(this)
}
(不推荐)这样调用时绑定addNewAlarm
onPress={this.addNewAlarm.bind(this)}
这是因为此上下文中的属于方法而不是类,并且在方法addNewAlarm()中没有定义此类方法。这是词法这个的更一般的问题
你可以用三种方法来解决它(你应该采用第一种方法,如果你不喜欢,那么你应该采用第二种方法)
转换声明
addNewAlarm(){
this.showAlarms();
}
到
让宣言成为现实吧
addNewAlarm(){
this.showAlarms();
}
但是在类中编写一个构造函数
constructor(props) {
super(props)
this.addNewAlarm = this.addNewAlarm.bind(this)
}
(不推荐)这样调用时绑定addNewAlarm
onPress={this.addNewAlarm.bind(this)}
这是一个约束问题吗?i、 e您需要使用一个类属性箭头函数或添加一个构造函数()
与this.addNewAlarm=this.addNewAlarm.bind(this)
这是一个绑定问题吗?i、 e您要么需要使用类属性箭头函数,要么使用this.addNewAlarm=this.addNewAlarm.bind(this)