reactjs - 如何在React中使用useState Hook调用Parent函数?

标签 reactjs ecmascript-6 react-hooks

理想的结果是在单击列表中的项目时显示字符串。

这是根组件。

const App = () => {
  const [click, setClick] = useState(null);
  const handleClick = name => {
    setClick(name);
  };
  return (
    <div>
      <Parent handleClick={handleClick} />
      {click && <p>{click} is clicked.</p>}
    </div>
  );
};

和父组件。

const Parent = ({ handleClick }) => (
  <div>
    <Child
      name="First Item"
      handleClick={handleClick("First Item is Clicked!")}
    />
    <Child
      name="Second Item"
      handleClick={handleClick("Second Item is Clicked!")}
    />
    <Child
      name="Third Item"
      handleClick={handleClick("Third Item is Clicked!")}
    />
  </div>
);

和子组件。

const Child = ({ name, handleClick }) => <li onClick={handleClick}>{name}</li>;

此外,代码沙箱 link .

我只是想知道为什么结果永远不会因点击而改变。

最佳答案

问题是您没有将函数传递给handleClick,而是传递来自父级的评估值。您的代码必须是

import React from "react";
import Child from "./Child";

const Parent = ({ handleClick }) => (
  <div>
    <Child
      name="First Item"
      handleClick={() => handleClick("First Item is Clicked!")}
    />
    <Child
      name="Second Item"
      handleClick={() => handleClick("Second Item is Clicked!")}
    />
    <Child
      name="Third Item"
      handleClick={() => handleClick("Third Item is Clicked!")}
    />
  </div>
);

export default Parent;

Working demo

关于reactjs - 如何在React中使用useState Hook调用Parent函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57106772/

相关文章:

javascript - 如何使用 React Hooks 实现刷新按钮?

javascript - 如何添加预构建的 javascript 以与 webpack 进行 react

javascript - 如何在客户端的 react 组件内调用 Meteor.call?

javascript - 如何避免 ES6 Javascript 类继承命名冲突

Javascript循环遍历对象数组并获取两个值并插入到新的对象数组中

reactjs - 子组件在父组件重新渲染时重新渲染,即使 React.memo 返回 true

java - react native 错误 : 'Permission Denial: starting Intent"

javascript - typescript :类型错误未定义

javascript - 解构第一个数组项或如何强制 Mongoose 返回对象而不是单项数组

reactjs - react Hook : State is one step behind