data(){ return { tables:[] } }, mounted(){ this.getData() }, methods:{ getData(){ var subscription = web3.eth.subscribe('logs', { address: '0x123456..', topics: ['0x12345...'] }, function(error, result){ if (!error) console.log(result); }) .on("data", function(log){ // this.tables return the error message typeError: Invalid attempt to spread non-iterable instance.In order to be iterable, non-array objects must have a [Symbol.iterator]() method this.tables = [...log] }) } }En vue JS no puedo acceder a llenar this.tables para obtener datos, ¿cuál es la otra forma de hacerlo?
Bien, lo descubrí ahora, así que la solución es
const self = this var subscription = web3.eth.subscribe('logs', { address: '0x123456..', topics: ['0x12345...'] }, function(error, result){ if (!error) console.log(result); }) .on("data", function(log){ self.tables.push(log) })'this.tables' aquí significa las tablas de la función de devolución de llamada, 'esto' en la devolución de llamada no se dirige a los datos de vue.
prueba this.getData(this.tables) en mount().
y getData(tables) en métodos,
entonces la devolución de llamada debería ser function(log, tables){ tables = [...log]}