从组件中创建并调用函数

时间:2018-05-28 14:58:01

标签: reactjs create-react-app react-component

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

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

我正在使用create react app

由于

2 个答案:

答案 0 :(得分: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将引用props,以及传递给组件的函数,并在点击时执行该函数。

答案 1 :(得分: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();
   }
}