如何从react.js中的父级调用功能组件中子级的功能?

Roh*_*Rad 6 reactjs

我有两个组成部分:

  1. 父母
  2. 孩子

父组件是类组件,子组件是功能组件。从父组件调用子方法的最佳实践是什么?

这些组件的目标是能够动态加载 svg 文件。

父组件:

class UnitMonitor extends PureComponent {
  constructor() {
    super();
  }
  state = {
    img: null,
  };
  onChangeShcema = schemaID => {
    axios.get("/api/schemata/get-schemata-nodes/" + schemaID).then(response => {
      let path = response.data["0"]["file"];
      // call loadFile function of child component is needed
    });
render() {
    return (
      <Row type="flex" className="">
        <Col span={25}>
          <SvgViewer />
        </Col>
      </Row>
    );
  }
  };
Run Code Online (Sandbox Code Playgroud)

子组件:

const SvgViewer = () => {

  const loadFile = path => { 
    let svgFile = require("./images/" + path);
    const svg = document.querySelector("#svgobject");
    svg.setAttribute("data", svgFile);
  };

  return (
    <div className="unit-schema-container1">
      <object id="svgobject" type="image/svg+xml" data={null}></object>
    </div>
  );
};

export default SvgViewer;
Run Code Online (Sandbox Code Playgroud)

小智 3

在 React 中,尝试在父方法上运行子方法并不是一个好主意,因为这主要是糟糕设计的标志。由于您想要动态运行 SVG,因此您可以传递包含路径或动态加载所需内容的 prop。但是,如果您坚决要在父级上运行该方法,请查看这篇文章以了解如何执行此操作。

  • 来自“Programming .NET Components,第二版,Juval Lowy”——“简而言之,面向对象编程侧重于组合成一个大型二进制可执行文件的类之间的关系,而面向组件编程则侧重于可互换的代码模块独立工作,不需要您熟悉它们的内部工作原理即可使用它们。” -- 恕我直言,在子进程上调用函数更多的是 OOP,而不是 COP。但是,通过知道要传递给子级的 props,您是否没有为父级提供与要调用的函数名称和参数一样多的知识? (2认同)