我有2个js文件如下

mainpage.js

import * as React from 'react';
import Filter from '../components/filterPane.js';

export default function MainPage() {
    const handleSubmit = () => {
        alert('inside submit');
    }

    return (
        <div>
            <Header />
            <br/>
            <div className='rowC'>
                <Filter handleSubmit={handleSubmit}/>
            </div>
        </div>
      );
}

filterPane.js

import * as React from 'react';
import Button from '@mui/material/Button';

export default function ComplexGrid( {handleSubmit}) {

  const submitFilter = () => {
    handleSubmit(); // Call the parent function
  };

  return (
       <Button variant="contained" onClick={()=>{submitFilter()}}>Submit</Button>
  );
}

我想从filterPane.js中的onClick()事件调用mainPage.js中的handleSubmit()函数.

当我触发点击事件时,它在控制台中显示错误为Uncaught TypeError: handleSubmit is not a function.

任何帮助都非常感谢

谢谢,

推荐答案

以下是更正后的代码,以及对更改的解释:

mainpage.js:

import * as React from 'react';
import Filter from '../components/filterPane.js'; // Correct import path

export default function MainPage() {
  const handleSubmit = () => {
    alert('inside submit');
  };

  return (
    <div>
      <Header />
      <br />
      <div className='rowC'>
        <Filter handleSubmit={handleSubmit} /> // Pass handleSubmit as a prop
      </div>
    </div>
  );
}

filterPane.js:

import * as React from 'react';
import Button from '@mui/material/Button';

export default function Filter(props) { // Receive props correctly
  const submitFilter = () => {
    props.handleSubmit(); // Access handleSubmit from props
  };

  return (
    <Button variant="contained" onClick={submitFilter}>Submit</Button> // Pass submitFilter directly
  );
}

Explanation of changes:

  • 导入路径:mainpage.js中的导入路径不正确.它是 更正为../Components/filterPane.js以匹配文件 struct .
  • props 钻取:handleSubmit函数作为props 从 要筛选的主页.这允许筛选器访问和调用父级 功能.
  • Prop访问:在filterPane.js中,props对象被正确地用于 访问"提交"功能.
  • 事件处理:Filter中的onClick处理程序直接调用 SubmitFilter.没有必要把它包装在另一个匿名的 功能.
  • 函数名称:将filterPane.js中的组件名称从 要筛选以匹配其中的导出名称和用法的ComplexGrid Mainpage.js.
  • 使用这些更正,代码编译和运行时应不使用 "handleSubmit is not a Function"错误,允许您调用 来自filterPane.js中的onClick事件的handleSubmit.

Javascript相关问答推荐

Redux查询多个数据库Api reducerPath&

如何在JavaScript文件中使用Json文件

使用ThreeJ渲染的形状具有抖动/模糊的边缘

Reaction Native中的范围滑块

如何在使用rhandsontable生成表时扩展数字输入验证?

Reaction组件在本应被设置隐藏时仍显示

将相关数据组合到两个不同的数组中

如何找到带有特定文本和测试ID的div?

如何修复错误&语法错误:不能在纯react 项目中JEST引发的模块&之外使用导入语句?

顶点图使用组标签更新列之间的条宽

Pevent触发material 用户界面数据网格中的自动保存

使用API调用的VUE 3键盘输入同步问题

为什么我看到的是回复,而不是我的文档?

P5.js中矩形内的圆弧

AG-GRIDreact 显示布尔值而不是复选框

为什么在运行于<;img>;事件处理程序中的JavaScript中x和y是不可变的?

我们是否可以在reactjs中创建多个同名的路由

每隔一行文本段落进行镜像(Boustrophedon)

Rails 7:在不使用导入映射的情况下导入Java脚本

如何从图表中映射一组图表-js使用REACT