React:将 props 传递给函数组件

2024-01-12

我有一个关于道具和功能组件的看似微不足道的问题。基本上,我有一个容器组件,它在用户单击按钮触发的状态更改时呈现模态组件。模态是一个无状态函数组件,其中包含一些需要连接到容器组件内部函数的输入字段。

我的问题:当用户与无状态模态组件内的表单字段交互时,如何使用父组件内的函数来更改状态?我是否错误地传递了道具?

容器

export default class LookupForm extends Component {
    constructor(props) {
        super(props);
        
        this.state = {
            showModal: false
        };
    }
    render() {
        let close = () => this.setState({ showModal: false });

        return (
            ... // other JSX syntax
            <CreateProfile fields={this.props} show={this.state.showModal} onHide={close} />
        );
    }

    firstNameChange(e) {
      Actions.firstNameChange(e.target.value);
    }
};

功能(模态)组件

const CreateProfile = ({ fields }) => {
  console.log(fields);
  return (
      ... // other JSX syntax
      
      <Modal.Body>
        <Panel>
          <div className="entry-form">
            <FormGroup>
              <ControlLabel>First Name</ControlLabel>
              <FormControl type="text"
                onChange={fields.firstNameChange} placeholder="Jane"
                />
            </FormGroup>
  );
};

示例:说我想打电话this.firstNameChange来自模态组件内。我想将 props 传递给函数组件的“解构”语法让我有点困惑。 IE:

const SomeComponent = ({ someProps }) = > { // ... };


您需要为需要调用的每个函数单独传递每个道具

<CreateProfile
  onFirstNameChange={this.firstNameChange} 
  onHide={close}
  show={this.state.showModal}
/>

然后在 CreateProfile 组件中您可以执行以下操作

const CreateProfile = ({onFirstNameChange, onHide, show }) => {...}

通过解构,它会将匹配的属性名称/值分配给传入的变量。名称只需与属性匹配

或者只是做

const CreateProfile = (props) => {...}

并在每个地方打电话props.onHide或您尝试访问的任何道具。

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

React:将 props 传递给函数组件 的相关文章

  • Ext JS - 如何滚动到文本区域的底部

    这是我下面的代码 如何滚动到文本区域的底部 它一定是类似的东西 Ext getCmp output setScrollPosition Ext getCmp output getScrollHeight 这是我的文本区域代码 var myW
  • 使用 Javascript 在 Imacros 中循环

    我如何使用 javascript 循环 imm imacros 脚本 我搜索了一下 发现了这个 for i 0 i lt n i iimPlay marconame iim 但当我使用它时 我的浏览器 Firefox 18 挂起 for i
  • 如何将中间件绑定到socket.io中的事件

    现在您可以将中间件绑定到io use middleware 但这仅在建立套接字连接时触发 有没有办法在将其传递给事件句柄之前拦截它 就像在expressjs中一样 换句话说 In 快递 js你可以做 app get middleware1
  • ant-d upload中如何为removeFile添加PopConfirm一个图片文件

    我正在使用 Ant d Upload 通过本地系统上传文件 然后单击文件预览图像上的删除图标 图像文件将被删除 我想添加一个弹出确认 所以我尝试在 onRemovefunction 中添加确认作为承诺但它不起作用 它在浏览器中显示警报 on
  • 将 jquery-mobile 与 Webpack 结合使用

    我正在尝试使用 webpack 加载 jquery mobile 但到目前为止还没有运气 我知道 jquery mobile 依赖于 jquery ui 而 jquery ui 又依赖于 jquery 如何在 Webpack 中设置这样的场
  • Flask wtf.quick_form 运行一些 javascript 并设置表单变量

    我正在创建博客文章 到目前为止已经使用普通的 html 表单完成了 我所做的一个有趣的想法是运行 javascript onclick 并使用页面中的额外数据在表单中设置一个隐藏变量 这很好地传递到服务器并通过 request form 获
  • 禁用 JavaScript 中的右键单击

    当我尝试禁用右键单击时 它不起作用 我尝试使用下面的代码 document onclick function e console log e button if e button 2 e preventDefault return fals
  • 使react-leaflet能够离线使用

    我一直在使用反应传单 https github com PaulLeCam react leaflet图书馆 到目前为止运作良好 现在我希望网站预加载尽可能多的图块 以便网络应用程序 也是 PWA 可以在没有互联网的情况下使用 我找到了一些
  • iframe 重新加载按钮

    我浏览了很多网站 但似乎没有一个能正常工作 或者我不明白它们 我想要一个刷新某个 iframe 的简单按钮 该按钮将位于父页面上 并且 iframe 名称为 Right 有很多方法可以做到这一点 假设这个iframe markup 我们可以
  • Aptana Studio 3 上的预览选项卡在哪里?

    我在 Windows PC 上使用 Aptana Studio 2 并有一个选项卡用于在 IE 上预览页面 另一个选项卡用于在 Firefox 上预览 但我切换到了 Aptana 3 我不知道是没有预览还是我没有找到它 是的 我在 stac
  • AJAX:检查字符串是否为 JSON?

    我的 JavaScript 有时会在这一行崩溃 var json eval this responseText 当争论时会导致崩溃eval 不是 JSON 在进行此调用之前有什么方法可以检查字符串是否为 JSON 我不想使用框架 有什么方法
  • Angular 2在实例化子组件之前解析根组件

    当我刷新网络应用程序时 我希望它在实例化任何组件或路由之前请求潜在的登录用户数据 如果找到用户的数据 我想将其注入到我的所有其他子组件所依赖的服务中 场景 假设我有 3 个组件 应用程序 ROOT 主页和关于 如果我将此代码放在 About
  • 访问 TypeScript 数组的最后一个元素

    TypeScript 中有访问数组最后一个元素的符号吗 在 Ruby 中我可以说 array 1 有类似的东西吗 您可以通过索引访问数组元素 数组中最后一个元素的索引将是数组的长度 1 因为索引是从零开始的 这应该有效 var items
  • 在vscode中使用reactjs报错

    在 Visual Studio 代码中使用 jsx 语法 Visual Studio代码报错 请帮我 谢谢 符号 例如 而不是这样做 return lt button className square gt TODO lt button g
  • Flux + React.js - 操作中的回调是好还是坏?

    让我解释一下我最近遇到的问题 我有 React js Flux 驱动的应用程序 有一个列表显示文章数量 注意 应用程序中有多个不同的列表 和文章详情查看在里面 但每个列表只有一个 API 端点 它返回文章数组 为了显示我需要的详细信息fin
  • 有关于 PHP 中的 V8JS 的文档吗?

    有没有关于V8JS的文档 我是否只需要标准 PHP 或一些扩展即可使用 V8JS 我将非常感谢有关 PHP 中的 V8JS 的任何信息 要求 PHP 5 3 3 和 V8 库和标头安装在正确的路径中 Install http www php
  • Jquery,清除/清空 tbody 元素的所有内容?

    我认为这会相当简单 但似乎空方法无法清除我拥有的 tbody 如果有人知道执行此操作的正确方法 我将不胜感激 我只想删除 tbody 中包含的所有内容 到目前为止我正在尝试 tbodyid empty HTML table tbody tr
  • Jquery:选择菜单以显示和隐藏某些div元素

    我正在创建一个选择菜单 根据所选选项显示和隐藏某些 div 像这样的东西
  • 如何将React版本17降级到16?

    由于 React 17 不支持许多 React 包 如何将 React 版本从 17 降级到 16 假设您使用 npm yarn 或其他节点包管理器 依赖项版本列在package json 搜索react and react dom包下de
  • Express.js Passport认证自动失败跳过策略

    UPDATE 我已将代码从护照本地注册内部移至单独的处理程序 并且运行良好 问题在于 Passport 和本地注册的使用 但我不知道为什么 我使用 Node js Express Passport 进行身份验证和注册设置 这是以前使用过的标

随机推荐

  • 运行 Android Studio gradle 构建时如何使用所有 CPU 核心/线程?

    我正在 Android Studio 中寻找参数或配置 Gradle 它可以设置构建 以便在构建期间使用我的所有 CPU 核心 即 如果我有一个四核 CPU 并且每个核心运行 8 个线程 我如何优化构建 以便它将使用它可以获得的所有资源 当
  • Matlab M 脚本可以通过脚本中的语句停止吗?

    一个非常简单且可能显而易见的问题 如何使用脚本中的语句中止 Matlab M 脚本的执行 这类似于调用return在函数中间立即结束它 If return http www mathworks com help matlab ref ret
  • 性能监控Openerp

    我们正在尝试实施新的遗物 http www newrelic com http www newrelic com 在开发服务器上测试 openerp 的性能 newrelic的以下安装步骤要求我们修改WSGI应用程序文件 我是 opener
  • TDD:单元测试异步调用

    guys 我正在开发一个应用程序 并通过单元测试来构建它 但是 我现在处于需要测试异步调用的情况 例如 void testUserInfoBecomesValidWhenUserIsBuiltSuccessfully if userBuil
  • go build 工作正常但 go run 失败

    我在主包的一个目录下有几个文件 主程序 配置文件 服务器 go 当我这样做时 去构建 程序构建完美并且运行良好 当我这样做时 go run main go 失败了 Output command line arguments main go
  • 如何让自托管 signalR 服务器作为 NetCore 控制台应用程序运行

    我想使用 NetCore 在控制台应用程序中创建 SignalR 自托管服务器 我对 Web 开发和 Net Core 完全陌生 但想使用 SignalR 作为基于 Web 的实时协议 不需要网页 所以我想要一个控制台应用程序 我已经成功测
  • 出售苹果股票(一进一出)

    任何人都可以帮我解决我的代码吗 我在卖苹果时遇到问题 它减去我的所有股票 有时当我的输入超过股票时 数字会变成负数 int main void int choice 0 int days 1 i buyApple int stocks 99
  • IntelliJ 中的远程结对编程

    结对编程时有没有办法使用 IntelliJ 如果有 v7 和 v8 的选项就好了 但如果需要的话我会升级到 v9 这个问题有点像this https stackoverflow com questions 926349 remote pai
  • gradle 测试执行时间过长

    我有一个 Spring boot 应用程序 可以在 10 秒内启动 然而 在一个简单的空集成测试中 我的执行时间很糟糕 60 70 秒 使用 IntelliJ 或时也是如此gradle test spring上下文的初始化比手动运行服务花费
  • Elixir + Ecto:不在 [array] 中怎么办?

    我正在尝试寻找所有Users 中没有特定的字符串元素match history场地 我对此进行了猜测 matched user User gt where u device id not in u match history gt limi
  • 如何从 Checkbox.checked 上的 Gridview 获取 Id?

    我有 GridView 和一个按钮 如下所示 然后我将 gridview 与数据库中的数据绑定 GridView 有两个隐藏字段 Id 和 ClassIndex 当我选择一个复选框并单击按钮时 我想获取相应的 ID 和文件名
  • 如何解决 JDK 的这个限制?

    我正在从 Java Collection Framework 中寻找一个不允许 null 元素的类 你认识一个吗 Use Constraints import com google common collect Constraints Co
  • 聊天机器人 - 使用 Facebook 登录为不属于您的页面生成页面令牌

    有谁知道如何在您不拥有的页面上安装 Facebook 聊天机器人 我已经创建了一个聊天机器人并希望允许其他FB页面安装我的聊天机器人应用程序 我可以为我管理的FB页面生成page access token 但是如何获取我不是管理员的FB页面
  • 如何在生产模式下运行 GWT

    我正在尝试按照以下说明在生产模式下运行 GWT 项目https developers google com web toolkit usingeclipse https developers google com web toolkit u
  • 自定义视图组中的视图未显示

    我最近深入研究创建自定义 ViewGroups 并遇到了一个我无法解决的问题 我有 2 个 ViewGroups ViewManager 和 Article ViewManager 只是在上一篇文章下方布置一篇文章 即像垂直 LinearL
  • 向我解释尾部调用优化的重要意义是什么以及为什么 Python 需要它

    显然 对于 Python 是否需要尾部调用优化 TCO 一直存在很大争议 当有人向 Guido 发送了一份 SICP 副本 http drj11 wordpress com 2009 04 30 python tail call optim
  • 是否可以在自定义 AuthorizeAttribute 类中使用 RedirectToAction() ?

    使用 ASP Net MVC 2 有什么方法可以使用重定向到动作 http msdn microsoft com en us library system web mvc controller redirecttoaction aspx的方
  • VB.NET 中的 XML 文字可以递归吗?

    我有一堂课叫Profile它有一些简单的属性 然后它可以有一个集合配置文件项它又具有一些简单的属性 然后它可以有一个集合配置文件项 递归 现在我尝试使用 VB NET 3 5 附带的 XML Literals 生成一个非常简单的保存函数 我
  • 绑定:在“YYY”上找不到“XXX”属性,目标属性:“Xamarin.Forms.Label.Text”

    我正在使用 Xamarin Forms 和 MVVM 我在日志中收到以下内容 绑定 在 YYY 上找不到 XXX 属性 目标属性 Xamarin Forms Label Text 不确定它是否相关 但是当我更新命令函数中的变量时 该变量的更
  • React:将 props 传递给函数组件

    我有一个关于道具和功能组件的看似微不足道的问题 基本上 我有一个容器组件 它在用户单击按钮触发的状态更改时呈现模态组件 模态是一个无状态函数组件 其中包含一些需要连接到容器组件内部函数的输入字段 我的问题 当用户与无状态模态组件内的表单字段