Probleme beim Aufrufen von sendTransaction innerhalb eines Ereignishandlers

Ich habe Probleme mit Error: Invalid number of arguments to Solidity function. Grundsätzlich tritt das Problem auf, wenn ich sendTransaction mit einem Event-Handler aufrufe. dh hier ist der Code nach dem Anschließen eines Solidity-Ereignisses:

// premisObject was setup earlier to point at the Abi at the contract's deployed address const premisObject = this.premisObject // rightsSetRights has been hooked up to the required event const rightsSetRights = this.rightsSetRights rightsSetRights.watch(function (error, result) { if (!error) { const index = result.args._index const hash = result.args._hash premisObject._setRights(hash,index, {gas: 200000})) } else { console.error(result) } })

Dieser Aufruf premisObject._setRights(hash,index, {gas: 200000}))löst den Fehler aus. Wenn ich den gleichen Aufruf außerhalb des Event-Handlers mache:

premisObject._setRights(this.state.hash, 0, {gas: 200000})

....funktioniert einwandfrei. Irgendwie muss ich diesen Event-Handler aufrufen premisObject._setRights, weil ich dann den Wert des erforderlichen Index kenne. Irgendwelche Ideen, was los ist? Oder hast du vielleicht einen schlauen Plan, mit dem ich das Problem umgehen kann?

Haben Sie überprüft, ob Ihre Parameter index, hash und premisObject korrekt sind? Ich denke auch, dass einige Parameter ein '0x' davor brauchen. Auch wenn premisObject ein Vertrag ist, scheint es keine gute Idee zu sein, einen öffentlichen Methodennamen zu haben, der mit beginnt _.
Ja, alles überprüft, und alle scheinen korrekt zu sein. Ich umgehe derzeit das Problem, indem ich meine dAapp neu entwerfe, indem ich den erforderlichen Index generiere, anstatt ihn vom Event-Handler zu erhalten.
p.s. es ist nicht _setRights - es ist setRights (das war ein Transkriptionsfehler) ;)

Antworten (1)

Ich bin dem nie auf den Grund gegangen - am Ende habe ich meine dApp so umgestaltet, dass ich den Index setze, anstatt ihn zu bekommen.