【问题标题】:How do i click a button in parent component and access the data in child component?如何单击父组件中的按钮并访问子组件中的数据?
【发布时间】:2020-01-29 04:32:25
【问题描述】:

我正在研究 ReactJS 的概念,偶然发现了这个非常有趣的案例,

我的父组件中有一个按钮,单击该按钮将访问子组件中定义的简单字符串。

我知道将数据从父母传递给我们使用的孩子,并且将数据从孩子传递给父母,我们必须使用回调函数,但我不确定在这种情况下如何使用回调函数。我在定义函数等方面玩了一些,但似乎没有什么真正起作用。

我的 Main.js 文件

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

function handleClick(props) {
  console.log("clicked");
}

function Main(props) {
  return (
    <div>
      <button onClick={handleClick}>click</button>
      {console.log(props)}
    </div>
  );
}

export default Main;

我的 Child.js 组件

import React from "react";

function statement() {
  return "A sentence";
}

function Child(props) {
  //   let sentence = "This is from the child component";
  return (
    <div>
      <p>The child says {props.name} </p>
    </div>
  );
}

export default Child;

感谢您的阅读,如果这听起来太简单,请见谅。任何帮助将不胜感激。

【问题讨论】:

标签: javascript reactjs


【解决方案1】:

您可以在父组件中创建一个 ref 并将其传递给子组件,然后通过该 ref 访问子状态,例如:

function Main(props) {
  const child = useRef()
  const handleClick = () => {
    // get child state
    child.current.getState()
  }
  return <Child innerRef={child} />
}

function Child({ innerRef }) {
  const [someState, setSomeState] = useState()
  useImperativeRef(innerRef, () => ({ getState: () => someState }), [someState])

  return <SomeComponent />
}

您可以在官方文档中阅读有关上述代码的更多信息。

【讨论】:

  • 这看起来确实是个不错的方法,但我真的很想使用回调函数,而不是 ref、上下文 API 等
  • 那么你必须在主组件中保持子状态。
  • 请参考这个链接 [link](http://link 这里声明我们可以使用 props 和回调函数来做到这一点
猜你喜欢
  • 1970-01-01
  • 2021-10-05
  • 1970-01-01
  • 2021-06-11
  • 2018-12-24
  • 2020-02-21
  • 1970-01-01
  • 2023-03-13
  • 2019-09-27
相关资源
最近更新 更多