为啥我调用一次时会打印无限值?

Posted

技术标签:

【中文标题】为啥我调用一次时会打印无限值?【英文标题】:Why prints infinite value when I call it once?为什么我调用一次时会打印无限值? 【发布时间】:2021-01-12 05:27:32 【问题描述】:

它不断地调用 addName 函数 -

expo 挂钩 SQLite。
//hook for displaying the names in the database
const [names, setNames] = useState([]);

console.log(names);
//inserts a name into the database, calls update if successful
const addName = () => 
  let newName = `$"empty"-$"empty"`;

  db.transaction((tx) => 
    tx.executeSql("INSERT INTO Names(name) VALUES (?)", [newName], update());
  );
  //add the results of the database into the names hook
  const update = () => 
    console.log(db);
    db.transaction((tx) => 
      tx.executeSql(
        "SELECT name from Names",
        [],
        (tx,  rows ) => 
          setNames(() => 
            let retRA = [];
            rows._array.forEach((elem) => 
              retRA.unshift(elem.name);
            );
            return retRA;
          );
        ,
        (tx, error) => 
          console.log("ERRORE-->SQLITE--->", error);
        
      );
    );
  ;
;
addName();

【问题讨论】:

【参考方案1】:

看起来您正在组件的主体中调用addName。因为addName 会更新状态,这将导致无限循环。

仅在需要时(用户按下按钮后)或组件安装时尝试调用addName

【讨论】:

以上是关于为啥我调用一次时会打印无限值?的主要内容,如果未能解决你的问题,请参考以下文章

AWS.ApiGatewayManagementApi.postToConnection() 调用一次时执行两次

jquery组件ztree问题:为啥添加新节点时会自动添加2个以上的新节点

为啥我的代码只打印 nil 一次?

为啥在 C++ 中重写一次基方法会被调用

为啥 iOS 动画第一次运行时会变慢?

为啥我在 PL/SQL 中的 for 循环没有打印出最后一次迭代