1

我想这可能是一个简单的问题,但我想知道我应该如何以及在哪里定义一个函数,以便我可以从任何组件中调用它来响应?

假设我有一个功能可以在安装某个组件时将页面滚动到顶部。我已经在我需要效果的每个组件的 componentdidmount() 中包含了该功能。我可以在 app.js 之类的其他地方定义它,然后在需要的地方调用它吗?如果是,该功能是否应该包含在渲染中或其他地方。

顺便说一句,我正在使用创建反应应用程序

谢谢

4

2 回答 2

1

假设您有一个基于类的组件和一个功能组件。

在您的顶级组件中,您将拥有...

import React, {Component} from 'react'

class MyApp extends Component {

  myLogHandler = () => {
    console.log("Hello World")
  }

  render() {
    return (
      <MyOtherComponent clicked={this.myLogHandler}>
    )
  }
}

您只需使用上面的语法将您的函数作为道具传递!

在您的其他组件内部

const myOtherComponent {
  <button onClick={props.clicked}>HelloWorld</button>
}

props.clicked 将引用道具,以及传递给您的组件的函数,并将在单击时执行该函数。

于 2018-05-28T15:08:39.473 回答
1

您可以创建一个 utils.js 文件并在其中定义函数。例如;

export default function scrollToTheTop () {
// do the logic here
}

您可以在组件中导入和使用它,例如;

import React, {Component} from "react";
import {scrollToTheTop} from ./utils;

class SampleComponent extends Component {
   componentDidMount() {
      scrollToTheTop();
   }
}
于 2018-05-28T15:12:18.890 回答