ReactJS 表单提交阻止默认不起作用

2024-01-10

我正在学习 React JS,同时遵循在线教程。下面的代码停止工作并给我一个异常“TypeError:无法读取未定义的属性‘PreventDefault’”。有人可以帮我理解造成这种情况的原因吗?提前致谢。

const Card = (props)=>{
  return(
        <div style={{margin:'1em'}}>
          <img width ="75" src ={props.avatar_url}/>
          <div style={{display: 'inline-block', marginLeft: 10}}>
             <div style ={{fontSize:'1.25em', fontWeight: 'bold'}}>
               {props.name}
             </div>
             <div>{props.company}</div>
          </div>
        </div>
       );
};

const CardList = (props) => {
    return (
            <div>
                {props.cards.map(card => <Card {...card} />)}
             </div>
           );
       }

class Form extends React.Component {

  handleSubmit = (e) => {
        e.PreventDefault();
        console.log('Event: Form Submit');
  };

  render() {
        return (
        <form onSubmit={this.handleSubmit()}>
        <input type ="text" placeholder ="Github username"/>
        <button type ="submit">Add Card</button>
      </form>
    );
  }
}

class App extends React.Component {

state = {
    cards:  [
        {       name : "Paul O’Shannessy" , avatar_url: "https://avatars1.githubusercontent.com/u/8445?v=4", company: "Facebook"  },
        {       name : "Ben Alpert" , avatar_url: "https://avatars1.githubusercontent.com/u/6820?v=4",company: "Facebook"  },
      ]
}

  render() {
        return(
            <div>
              <Form />
              <CardList cards={this.state.cards} />
            </div>
        );
  }
}

ReactDOM.render(<App />,mountNode)

这里有两个小问题。第一个,不是PreventDefault, it is preventDefault。然后这里:

<form onSubmit={this.handleSubmit()}>

您没有使用回调函数,而是调用真正的函数。如果不使用回调,则无法获取e。另外,如果您像上面那样使用它,它会在第一次渲染时触发,但不会在提交时再次触发。

<form onSubmit={() => this.handleSubmit()}>

但是,您不需要也不应该这样使用它。如果像这样使用它,回调函数将在每次渲染中重新创建。只需使用该函数的引用即可。你可以得到e也有这个。

<form onSubmit={this.handleSubmit}>

最后一件事,使用key为您Card's map.

{props.cards.map( card => <Card key={card.name} {...card} /> )}

哦,也许最后一件事:) 如果您当前不使用 linter,请使用它。

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

ReactJS 表单提交阻止默认不起作用 的相关文章

随机推荐

  • 多类分类问题中的不平衡类

    我正在尝试使用 TensorFlow 的 DNNClassifier 来解决具有 4 个不同类的多类 softmax 分类问题 我有一个不平衡的数据集 其分布如下 0级 14 8 1 级 35 2 2级 27 8 三级 22 2 如何为 D
  • 使用受保护的析构函数删除对象

    我必须为类编写一个共享指针 它必须做的许多其他事情之一是确保它可以删除它所指向的对象 如何编写适用于具有受保护析构函数的对象的解决方案 此外 如果该对象是使用放置新创建的 我不应该调用delete在对象上 因为该空间可能仍在使用中 将del
  • java集合中next()和hasNext()的区别

    我是java新手 我正在浏览集合 并且在迭代过程中他们使用了next and hasNext 方法 这两个方法具体有什么作用呢 我什么时候必须使用next and hasNext hasNext 如果迭代有更多值 则返回 truenext
  • jQuery 单击功能仅适用于第一个元素

    我在使用 jQuery 时遇到了一些问题 我正在制作一个简单的 CMS 在界面中我有一个页面列表 每个列表项中都有一个编辑链接 我让 jQuery 监听带有该编辑 ID 的点击 然后 它会查看父 LI 以查看它具有什么 id 以便用户可以将
  • fancybox 2.0.4 和 Vimeo

    我在将新的 fancybox V 2 0 4 g81c12d7 与新的 iframe vimeo 嵌入代码集成时遇到很多困难 有人有解决方案吗 是的 最简单的方法是使用新的 vimeo 的 万能播放器 http vimeo com api
  • 在 UINavigationController 中为根视图制作后退按钮

    所以我创建了一个UI导航控制器手动将其设置为我的UIWindow 的rootViewController 我想使用后退按钮退出UI导航控制器并在其位置加载另一个 viewController 但是 那backItem的财产UI导航栏 is
  • 语音识别产生 OSError:没有可用的默认输入设备

    This import speech recognition as sr r sr Recognizer with sr Microphone as source print Speak Anything audio r listen so
  • Swift:截断浮点数以将其显示在标签中[重复]

    这个问题在这里已经有答案了 当我想截断浮点数以在 Objective C 中的标签中显示时 我可以使用LABEL text NSString stringWithFormat 3f FLOAT 虽然我找不到如何在 Swift 中做到这一点
  • 使用 PyQt 捕获网络摄像头视频

    给出以下 PyQt 代码 我可以完美捕获网络摄像头的流视频 现在 我想修改代码 因此添加了一个名为 捕获 按钮 按下后将捕获流视频并保存图像 我怎样才能做到这一点 获得的小图像将用于查询对象识别服务器 import sys from PyQ
  • Spring MVC 检测ajax请求

    如何以最好的方式检测ajax请求 我目前在我的控制器中使用它 private boolean isAjax HttpServletRequest request String header request getHeader x reque
  • SwiftUI 工作表在第一次出现时就被忽略了

    这个错误快把我逼疯了 有时 大多数时候 提交的工作表会被忽略first打开的时间 这种情况仅发生在设备上并且仅在应用程序第一次启动时发生 这是使用 Xcode 12 1 构建的运行 iOS 14 1 的 iPhone 11 上的外观 也可以
  • 现代 Akka DI 与 Guice

    这里是 Java 8 Guice 4 0 和 Akka 2 3 9 我试图弄清楚如何用 JSR330 风格注释我的演员类 Inject注释 然后通过 Guice 将它们全部连接起来 但实际上我读过的每一篇文章 下面的一些例子 要么使用 Sc
  • 当功能发生代码更改时,我们是否可以仅发布动态功能模块,而不是再次发布整个应用程序?

    假设我们的项目中有不同的功能模块 并且其中一项按需功能发生了代码更改 现在我想知道的是 我们是否可以仅针对代码更改的功能构建 aab android 应用程序包 或 apk 并将其上传到 Playstore 而不是再次构建整个应用程序并上传
  • winforms 手风琴 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人知道 C winforms 手风琴控件吗 最好是开源或免费的 这是一个使用的基本示例CheckBox
  • HTML 中的 标签

    我正在编写 HTML 入门课程 我记得 9 年前我在学习 HTML 时发现 img and
  • 为名称中带有“点”的变量赋值

    我是 R 新手 正在尝试以下代码 令我惊讶的是 分配一些东西给ret log id实际上会导致将相同的值分配给ret log以及 例如 ret lt c ret log id lt a 运行以下命令将返回 a ret log 这是 R 应该
  • 有没有办法获取所有已注册的消息转换器?

    我想以某种方式注入所有HttpMessageConverter在 Spring MVC 中注册的实例 我可以成功注入所有已通过注册的内容 private HttpMessageConverter converters Autowired p
  • 是否可以使用replaceAll()将字符串中的前导零替换为相同数量的空格?

    在Java中 我尝试用 spacespace1 234 替换 001 234 等字符串 然而 我是一个正则表达式新手 我似乎最终将所有前导零都替换为单个空格 我知道我可以通过循环轻松完成此操作 但我正在尝试使用正则表达式并感谢任何帮助 没问
  • 在带有色调(分类变量)的pairgrid图上显示两个相关系数 - seaborn python

    我找到了一个函数来计算相关系数 然后将其添加到配对图中 如下所示 我的问题是 当我运行带有色调 分类变量 的配对图时 两组的相关系数显示在彼此之上 这就是情节的样子 https i stack imgur com AZao1 png 这是我
  • ReactJS 表单提交阻止默认不起作用

    我正在学习 React JS 同时遵循在线教程 下面的代码停止工作并给我一个异常 TypeError 无法读取未定义的属性 PreventDefault 有人可以帮我理解造成这种情况的原因吗 提前致谢 const Card props gt