带参数的回调函数ReactJS

2023-12-25

使用 ReactJS 并难以理解如何使用callback functions使用 ReactJS。

我有一个名为的父组件TodoFormComponent,它初始化我的待办事项列表。我已经创建了一个回调函数TodoItemsComonent,但它不会触发updateItem方法并显示selected item.

问题:如何将数据从孩子传递给父母?我想将选定的待办事项传递给父级,以便我可以更新主待办事项列表。


父组件 (TodoFormComponent)


The TodoFormComponent has selectedTask,这应该会触发updateItem方法。

import * as React from "react";
import TodoItemsComponent from "../todo-items/todo-items.component";
import AddTodoItemComponent from "../add-todo-item/add-todo-item.component";

export default class TodoFormComponent extends React.Component {
    constructor(){
        super();
        this.state = {
            todoItems: [
                { id: '1', todo: 'First Todo Item' },
                { id: '2', todo: 'Second Todo Item' },
                { id: '3', todo: 'Third Todo Item' }
            ],
            selected: {}
        };

        this.updateItem = this.updateItem.bind(this);
    }

    updateItem () {
        console.log('Selected Value:: ', this.state.selected);
    }

    render() {
        return (
            <div className="row">
                <div className="container">
                    <div className="well col-xs-6 col-xs-offset-3">
                        <h1>To do: </h1>
                        <div name="todo-items">
                            <TodoItemsComponent items={this.state.todoItems} selectedTask={() => {this.updateItem}}/>
                        </div>
                        <div name="add-todo-item">
                            <AddTodoItemComponent/>
                        </div>
                    </div>
                </div>
            </div>
        )
    }
}

子组件 (TodoItemsComponent)


The TodoItemsComponent has an onClick更新选定的值。这会在以下位置更新selectedTask功能。 从“react”导入* as React;

export default class TodoItemsComponent extends React.Component {
    constructor(props) {
        super(props);
    }

    selectedTask (item) {
        this.setState({selected: item})
    }

    render() {
        return (
            <ul className="list-group">
                {
                    this.props.items.map((item) => {
                        return (
                            <li className="list-group-item">
                                {item.todo}
                                <div className="pull-right">
                                    <button
                                        type="button"
                                        className="btn btn-xs btn-success">
                                        &#x2713;
                                    </button> <button
                                        type="button"
                                        className="btn btn-xs btn-danger"
                                        onClick={() => {this.selectedTask(item)}}
                                        >&#xff38;
                                    </button>
                                </div>
                            </li>
                        )
                    })
                }
            </ul>
        )
    }
}

每当您想要将数据从子级传递到父级时,您都可以将函数作为道具传递给子级,然后从子级调用该函数this.props.passedFunction(yourDataToPassToParent)

您从父组件中传递了selectedTask函数作为 prop,所以你应该调用this.prop.selectedTask()将数据传递给父级,例如:

<button
  type="button"
  className="btn btn-xs btn-danger"
  onClick={() => {this.props.selectedTask(item)}}
 >
  &#xff38;
 </button>

还有你通过的方式selectedTask你父母的观点是错误的。你应该这样传递:

<TodoItemsComponent items={this.state.todoItems} selectedTask={this.updateItem}/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带参数的回调函数ReactJS 的相关文章

随机推荐

  • 仅允许输入数值 Datagridview 特定列

    有什么方法可以自定义 datagridview 列以仅接受数值 此外 如果用户按数字以外的任何其他字符 则不得在当前单元格上键入任何内容 有什么方法可以解决此问题 private void gvAppSummary EditingContr
  • 在 TFS2015 update2 vNext 构建配置中发送请求时发生错误

    配置 TFS vNext 构建代理时出现错误 连接到服务器时出错 发送请求时发生错误 的请求 我在事件日志或其他任何地方找不到任何其他错误消息 请帮忙 更新1 SSL https tfs 不起作用 但是简单的 http 起作用了 更新 2
  • 一个巨大的 CSS - 还是许多小的 CSS?

    希望是简单的问题 我们有一个超过 3000 行的样式表 因此在渲染页面时存在明显的延迟 问题是 是使用一个覆盖所有内容的大型样式表更好 还是使用许多覆盖页面不同部分的小样式表更好 例如 一个用于布局 一个用于下拉菜单 一个用于颜色等 这只是
  • OCaml 语言的 IDE

    除了 Camelia 之外 还有其他值得信赖的 OCaml IDE 吗 如果存在的话 我更喜欢基于 Eclipse 的 IDE 编辑 十年后 2022 VS Code OCaml 平台 https marketplace visualstu
  • 通过 CPU/GPU 的占位符获取不同的值

    当我运行下面的代码时 我认为我得到了错误的结果 OVER GPU import tensorflow as tf sess tf Session a tf placeholder tf float32 b tf placeholder tf
  • 如何在 CakePHP 中强制刷新图像和 css 文件?

    我有以下问题 我正在 CakePHP 中编码 而且我是新手 我经常需要更改网站上的一些图像或 css 文件 在网站上我总是看到旧的内容 除非我手动按键盘上的 F5 我必须在每个使用该网站的工作场所执行此操作 这很令人恼火 尤其是因为我不知道
  • 更改子进程中的环境变量 - bash

    嗨我有以下示例 a sh 脚本设置了我可以在 b sh 子 脚本中看到的环境变量 但是如果我更改它 我仍然在 a sh 中保留旧值 a sh bin bash export A 1 b sh echo parent A b sh bin b
  • 存储WPF图像资源

    对于需要 10 20 个小图标和图像用于说明目的的 WPF 应用程序 将它们作为嵌入式资源存储在程序集中是正确的方法吗 如果是这样 如何在 XAML 中指定图像控件应从嵌入资源加载图像 如果您将在多个地方使用该图像 那么值得将图像数据仅加载
  • 比较 Highcharts 组合图表中工具提示内的两个数据点

    我有一个共享单个 Y 轴的组合条线图 条形图和折线图的数据点始终共享相同的 Y 值 我希望能够计算工具提示中两个 X 值之间的差异 这是我正在使用的图表 组合图 http jsfiddle net 7RQU4 让它工作 诀窍在于工具提示的共
  • 如何编写 ZF2 路由器脚本以允许默认操作上的参数

    我试图解决 ZF2 中路由语句的一些特性 相册模块示例建议如下 router gt array routes gt array album gt array type gt segment options gt array route gt
  • 如何消除 Windows.Forms 自定义控件滚动时的闪烁?

    我想用 C 创建一个自定义控件 但每次我必须完全重绘控件时 即使我使用双缓冲 首先绘制到图像 然后位图传输 它也会闪烁 当我必须完全重绘时如何消除闪烁 您可以尝试在 InitializeComponent 调用之后将以下内容放入构造函数中
  • 如何使用 Knex.js 从列中检索唯一值?

    I use Knex js http knexjs org 与 Postgres 数据库通信 我的表中有一些行 其中有一列名为 state 代表美国的一个州 如何从此列中检索所有唯一值 您可能正在寻找不同的节点 https knexjs o
  • 如何对推送通知进行分组

    我正在向我的 Android 手机发送推送通知 我希望对这些通知进行分组 这样我的通知列表就不会被淹没 根据文档 来自同一 源 的消息被分组 但在我的手机上 消息总是显示为未分组 我从 Google Apps 脚本调用推送 API 并尝试在
  • 从多个远程Windows服务器获取磁盘空间信息

    我正在尝试制作一种工具 可以登录多个远程 Windows 服务器并获取其驱动器详细信息并将其显示在一个窗口下 我希望在远程服务器中执行的可能命令是wmic logicaldisk get size freespace caption 我打算
  • matplotlib 文本未剪切

    绘制文本时matplotlib with text 然后交互平移图像 生成的绘制文本不会剪切到数据窗口 这与使用绘制数据或绘制文本的方式相反annotate 有效 并且没有直观意义text 使用数据窗口坐标 import matplotli
  • 当 CWD 更改时,如何在 Python 模块中使用相对路径?

    我有一个 Python 模块 它使用模块目录的子目录中的一些资源 在搜索堆栈溢出并找到相关答案后 我设法使用类似的方法将模块定向到资源 import os os path join os path dirname file fonts my
  • 将结构传递到接口字段中是否会分配?

    我有一个像这样的结构 struct MyStructure IFoo 和这样的方法 public BarThisFoo IFoo a 我的问题是将结构传递到该方法中是否会 装箱 结构 从而导致垃圾分配 附录 在有人说之前 垃圾收集在这个应用
  • TwinCAT3 基于 Jenkins 构建

    是否可以在 Jenkins 上构建 TwinCAT3 解决方案 我已经用 msbuild 和 devenv com 尝试过了 msbuild MSBuild 不支持 tspproj devenv com tspproj 找不到该项目类型所基
  • 导入错误:没有名为 的模块

    我正在尝试通过 Python 学习编程 所以如果这是一个简单得荒谬的问题 我提前道歉 我试图简化我复杂的目录结构并利用Python的一些代码重用功能 我遇到了对我来说莫名其妙的问题ImportError错误 在过去的几个小时里 我一直在阅读
  • 带参数的回调函数ReactJS

    使用 ReactJS 并难以理解如何使用callback functions使用 ReactJS 我有一个名为的父组件TodoFormComponent 它初始化我的待办事项列表 我已经创建了一个回调函数TodoItemsComonent