Javascript 反应:“;这";在组件函数中未定义
我想调用self.setState({date\u data:tour\u dates})在async.series块中的第三个函数中的代码>。所以我有一个嵌套函数,而且似乎在每个块上使用.bind(这个)似乎都不能解决我的问题。我错过了什么?我应该如何改变我的编码风格来避免这样的问题Javascript 反应:“;这";在组件函数中未定义,javascript,node.js,reactjs,this,Javascript,Node.js,Reactjs,This,我想调用self.setState({date\u data:tour\u dates})。所以我有一个嵌套函数,而且似乎在每个块上使用.bind(这个)似乎都不能解决我的问题。我错过了什么?我应该如何改变我的编码风格来避免这样的问题 var mysql = require('mysql'); var async = require('async'); var self = this; var moment = require('moment'); class ArtistTable ex
var mysql = require('mysql');
var async = require('async');
var self = this;
var moment = require('moment');
class ArtistTable extends React.Component {
constructor(props, context) {
super(props, context);
this.getArtistData = this.getArtistData.bind(this);
this.state = {
open: false,
date_data: [],
};
}
getArtistData (artistName) {
var artist_id = -1;
var tour_id = -1;
var tour_dates = new Array();
var connection = mysql.createConnection({
host : '127.0.0.1',
user : 'root',
password : '',
database : 'anand2'
});
connection.connect(function(err) {
if (err) {
console.error('MYSQL Error Connecting!' + err.stack);
return;
}
console.log('MYSQL ArtistTable connected as ' + connection.threadId);
});
async.series([
function(callback){
connection.query("SELECT * FROM artist WHERE name = '" +artistName+"'" , function(err, rows){
artist_id = rows[0].id;
callback();
});
}, function(callback){
//finde tour ID
connection.query("SELECT * FROM tour WHERE artist = " + artist_id , function(err, rows){
console.log("SELECT * FROM tour WHERE artist = " + artist_id ) //Todo: neue erstellen
console.log(rows.length)
tour_id = rows[0].id;
console.log("Tour ID is " + tour_id)
callback();
});
}, function(callback){
connection.query("SELECT dtime,location FROM tour_date WHERE tour="+ tour_id + " AND dtime >= CurDate() ORDER BY dtime ASC" , function(err, rows){
if (rows.length > 0) {
for (var i = 0; i < rows.length; i++) {
tour_dates.push({date: rows[i].dtime, location: rows[i].location });
}
console.log("Number of dates: " + tour_dates.length)
self.setState( { date_data: tour_dates});
}
}.bind(this));
}
]);
}
}
var mysql=require('mysql');
var async=require('async');
var self=这个;
var力矩=要求的(‘力矩’);
类Artistable扩展了React.Component{
构造函数(道具、上下文){
超级(道具、背景);
this.getArtistData=this.getArtistData.bind(this);
此.state={
开:错,
数据日期:[],
};
}
getArtistData(artistName){
var\u id=-1;
var-tour_id=-1;
var tour_dates=新数组();
var connection=mysql.createConnection({
主持人:“127.0.0.1”,
用户:'根',
密码:“”,
数据库:“anand2”
});
connection.connect(函数(err){
如果(错误){
console.error('MYSQL连接错误!'+err.stack);
返回;
}
log('MYSQL ArtistTable作为'+connection.threadId'连接);
});
异步系列([
函数(回调){
connection.query(“从艺人中选择*,其中name=”+artistName+”,函数(err,行){
艺术家id=行[0]。id;
回调();
});
},函数(回调){
//芬德旅游ID
connection.query(“从艺术家所在的巡演中选择*”+艺术家id,函数(错误,行){
console.log(“从艺术家所在的巡演中选择*”=+artist_id)//Todo:neue erstellen
console.log(rows.length)
巡更id=行[0]。id;
console.log(“巡更ID为”+巡更ID)
回调();
});
},函数(回调){
connection.query(“按dtime ASC选择dtime,从tour\u date中选择位置,其中tour=“+tour\u id+”和dtime>=CurDate(),函数(err,行){
如果(rows.length>0){
对于(变量i=0;i另外,请忽略“self=this”,这是一个测试,我确实尝试过它。您需要将self=this放在getArtistData中的async.series之前