javascript - 如何从 React 组件中的另一个文件调用函数

标签 javascript reactjs

我想从 React 组件调用一个函数。此函数将调用调用它的组件中的另一个函数。

我的组件:

import React, { useState } from "react";

// import turnOnGreenLight from "./green.js"; // <-- I want to import this

export const initialLightValues = ["unactive", "unactive"];
export let setLightsVar = initialLightValues;

function App() {

  const [lights, setLights] = useState(initialLightValues);

  function turnOnRedLight() {
    setLightsVar[0] = "active";
    updateLightsState();
    turnOnGreenLight();
  }

  // I want to move this function "turnOnGreenLight" in the file green.js
  function turnOnGreenLight() {
    setLightsVar[1] = "active";
    updateLightsState();
  }

  function updateLightsState() {
    setLightsVar = setLightsVar.slice();
    setLights(setLightsVar);
  }

  return (
    <div className="App">
      <button onClick={() => turnOnRedLight()}>Turn on the lights</button>
      <br />
      <div className={"red-light " + lights[0]}>Red</div>
      <div className={"green-light " + lights[1]}>Green</div>
    </div>
  )
}

export default App

green.js 文件中的函数如下所示:

import { setLightsVar, updateLightsState } from "./App";

function turnOnGreenLight() {
  setLightsVar[1] = "active";
  updateLightsState();
}

export default turnOnGreenLight;

我不确定我正在尝试做的事情是否可行。

最佳答案

这是可能的,但你会收到循环模块警告,如果你将运行 jest 测试,它会抛出异常,所以如果你想这样做,最好将函数 updateLightsState 作为回调参数传递 - 那么没问题

function turnOnGreenLight(callback) {
  setLightsVar[1] = "active";
  callback();
}

turnOnGreenLight(updateLightsState)

关于javascript - 如何从 React 组件中的另一个文件调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58359580/

相关文章:

javascript - 如何根据用户输入使用 Node.js 发出 HTTP 请求?

javascript - 如何CSS显示:none within conditional with React JSX?

reactjs - 将 CSS 文件导入到样式化组件

node.js - 我在创建 react 应用程序时遇到这样的错误

javascript - 用 qwest react 无限滚动

javascript - React 中的臃肿状态

javascript - 删除图像的 CSS(CSS 是生成代码的一部分)

javascript - Internet Explorer 中损坏的 d3.js 动画

javascript - 使用 Django 将对象从模板传递到 View

reactjs - 在 Servlet 环境中部署 React 应用程序