一个View函数是如何将数据发送到前端的?

How is data sent to the front-end by a View function?

我需要将一些数据从仅查看函数发送到前端。我尝试通过发出具有必填字段的事件来使用标准方法。但是,当将 emit 调用放置在视图类型函数中时,我收到一条错误消息,指出 emit 调用可能会改变状态,因此不能在视图函数中。

如果不能使用事件,View函数如何将数据发送到前端?

event TestEvent (uint id);
function test() public view {
    emit TestEvent(123);
}

//Output
... TypeError: Function declared as view, but this expression (potentially) modifies the state and thus requires non-payable (the default) or payable.
...

事件的发出永久存储在区块链上。因此,它会导致状态发生变化,必须放在非视图函数中。

相反,可以使用 return 从仅查看函数返回值,例如return 123