# Yumi 可能是问题的问题

By [Kjsghuh](https://paragraph.com/@kjsghuh) · 2022-05-23

---

1、II 登陆之后刷新页面会退出登陆

2、对于某些状态的修改可以采用agent.call代替actor调用（不是很慢的话没必要）

3、某些use Effect内部修改了依赖项的状态导致一直渲染。（**Launchpad页面**）

如何使用agent.call
--------------

![图 一](https://storage.googleapis.com/papyrus_images/cf8289d29ac484a759613bdc28c35c4aeac8b5a1a81fdef6c27c8e73a049553f.png)

图 一

直接上图，其他的不用管，直接看actor是如何调用的；我们要做的就是搞清楚如何拿到这几个参数：

cid：canister ID，你需要call的那个canister的id

methodName：

![图 二](https://storage.googleapis.com/papyrus_images/cac35870f918db45648fe9049e1114469f64a0062d2cb0027ea340f856d1e31d.png)

图 二

如图所示，其中inerfaceFactory就是did.js文件中的那个factory，IDL为candid库中的接口，直接import就行了。来到for循环就可以拿到这个canister中的所有方法名和其对应的func。

arg:

![图 三](https://storage.googleapis.com/papyrus_images/b8ce61c56a6169ef30cd55dbe88c1b9473e6a5c53b698c7ce4d5a15a0cedc11b.png)

图 三

首先，IDL和func还是那两个东西，args就是正常用actor调用的时候传给后端的参数但得在外面套一个\[ \]，这样就可以拿到arg。

effectiveCanisterId：这个就填canisterid就行，这个据我了解只在调用management canister的时候才会区分canisterId和effectiveCanisterId；官方文档如下：

[https://internetcomputer.org/docs/current/references/ic-interface-spec/#http-effective-canister-id](https://internetcomputer.org/docs/current/references/ic-interface-spec/#http-effective-canister-id)

以上就是call函数的参数构成，调用call函数直接交互会很快，但其不能拿到后端的返回值，只能拿到这个http的response，确定其发给了后端，但其处理不可见，不知道后端是否执行结束，返回值是什么。actor会在调用call之后一直去read\_state，直到拿到返回值或者报错。

---

*Originally published on [Kjsghuh](https://paragraph.com/@kjsghuh/yumi)*
