javascript - 如何在react中通过多个嵌套循环传递函数

标签 javascript reactjs function

我试图通过多个嵌套循环传递一个名为“clicker()”的函数。我收到以下错误:

Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.

clicker() 函数遵循以下路径:

app.js --> one.js --> 二.js --> 三.js

如何传递这个在 app.js 中启动的函数,直到它到达最后一个组件。请注意,app.js 渲染 one,这渲染 two,这渲染 Three

here是我的codesandbox。

app.js:

import React, { useState } from "react";
import One from "./components/one";

export default function App() {
  const [counter, updateCounter] = useState(0);
  let clicker = () => {
    updateCounter(counter + 1);
  };

  return (
    <div className="App">
      <h1>how to pass a function through nested components in React </h1>
      <h3> {counter} </h3>
      <One passMe={clicker} />
    </div>
  );
}

one.js

import Two from "./two";

function One(props) {
  return (
    <div className="App">
      <p> this is the nested function</p>
      <Two passMe={props.passMe} />
    </div>
  );
}
export default One;

two.js

import React from "react";
import Three from './three'

export default function Two(props) {


  return (
    <div className="App">
<Three passMe={props.passMe} />
    </div>
  );
}

最后是two.js

import React from "react";

export default function App(props) {


  return (
    <div >
      <button passMe={props.passMe(5)}>Cliicker! </button>
    </div>
  );
}

非常感谢

最佳答案

如果函数不支持任何参数,为什么要传递 5 作为参数?

假设您想要这样,您可以更改此设置:

App.js上:

const clicker = (num = 1) => {
    updateCounter(counter + num);
};

三.js上:

<button onClick={() => props.passMe(5)}>Cliicker!</button>

关于javascript - 如何在react中通过多个嵌套循环传递函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70809561/

相关文章:

reactjs - React 将一个对象传递给路由

javascript - 使用 redux 时应该优先选择哪种生命周期方法?

C++使用仿函数将函数传递给函数

javascript - 对象中的应用、绑定(bind)和调用方法如何可用

javascript - 使用jquery删除表行

javascript - 添加和删​​除类数组错误

javascript - 如何在 React 中处理已 checkin 的输入类型 ='checkbox'?

javascript - Highcharts 工具提示系列名称前面的奇怪字符

r - 无法使用输入参数函数作为过滤器参数 (R/dplyr)

C函数只调用一次和圈复杂度