如何在 React 中正确捕获 Materialize-CSS datepicker 值?

2024-05-07

我希望创建一个带有日期选择器 https://materializecss.com/pickers.html在我的 React 组件中物化CSS https://materializecss.com/。该表单捕获的字段不多,而且结构相当简单。返回的表单如下所示:

<form onSubmit={this.handleSubmit.bind(this)}>
     <div className="container">
          <div className="card grey lighten-3">
               <div className="card-content black-text">
                    <span className="card-title">
                            <input placeholder="Event Name"
                                    name="name" value={this.state.name}
                                    onChange={this.handleStateChange.bind(this)}/>
                    </span>
                    <input name="description" placeholder="Description"
                                      value={this.state.description}
                                      onChange={this.handleStateChange.bind(this)}/>
                    <input name="image" placeholder="Image URL"
                                      value={this.state.image}
                                      onChange={this.handleStateChange.bind(this)}/>
                    <input placeholder="Start Date"
                                className="datepicker" name="startDate" value={this.state.startDate}
                                onSelect={this.handleStateChange.bind(this)}/>
                </div>
                <div class="card-action">
                    <div className="row">
                        <span>
                           <div className="col s3">
                               <input className="btn light-blue accent-1" type="submit" value="Submit"/>
                           </div>
                           <div className="col s3">
                               <a className="btn grey" onClick={this.handleExpand.bind(this)}>Cancel</a>
                           </div>
                       </span>
                   </div>
               </div>
           </div>
       </div>
   </form>

状态改变的处理方式是

handleStateChange(item) {
    this.setState({[item.target.name]: item.target.value});
}

我已经打电话给AutoInit https://materializecss.com/auto-init.html初始化我的日期选择器

M.AutoInit();

我尝试过使用onChange代替onSelect管理日期选择器状态更改,但它似乎没有捕获该事件。和onSelect使用过,如果我选择一个日期然后重新打开日期选择器,有时会捕获日期。

我也尝试过使用一些日期选择器的替代初始化方法 https://materializecss.com/pickers.html无济于事。

如何使用给定的设置正确捕获输入变化?


嗨,希望这会对某人有所帮助 -

会发生什么组件的不同之处在于默认的 onChange 方法返回日期 (2019-08-01),而不是元素的事件处理程序对象。为了解决这个问题,我们需要在 onChange 方法中创建一个对象来模仿事件处理程序的 target.id 和 target.value

其他组件如正常工作。一探究竟:

该组件应如下所示:

            <DatePicker
                label="myDate"
                value={state.myDate}
                id="myDate"
                onChange={(newDate) => {
                    handleChange({
                        target: {
                            id: "myDate",
                            value: newDate
                        }
                    })
                }} />

这是完整的代码:

import React, { useState, useEffect } from "react";
import "materialize-css/dist/css/materialize.min.css";
import "materialize-css/dist/js/materialize.min.js";
import { DatePicker } from "react-materialize";

const PickDate = (props) => {

    const [state, setState] = useState({myName: "Mags", myDate: "2019-08-01"});

    const handleChange = (e) => {
        const key = e.target.id;
        const val = e.target.value;

        const newState = {...state};
        newState[key] = val;
        setState(newState);
    }

    return (
        <React.Fragment>
            <input type="text" value={state.myName} id="myName" onChange={handleChange} />
            <DatePicker
                label="myDate"
                value={state.myDate}
                id="myDate"
                onChange={(newDate) => {
                    handleChange({
                        target: {
                            id: "myDate",
                            value: newDate
                        }
                    })
                }} />
        </React.Fragment>
    );
}

export default PickDate;

附言。这使用了 React Hooks - 但它也适用于普通类。

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

如何在 React 中正确捕获 Materialize-CSS datepicker 值? 的相关文章

随机推荐

  • Terraform azurerm 计划 start_time 始终在新部署时重置

    我正在尝试获取资源azurerm automation schedule在特定时间部署 ex 18 00 每月发生 我正在使用以下代码 locals update time 18 00 update date formatdate YYYY
  • 即使给出了公钥,Gitosis 也需要密码

    我在 Archlinux 上尝试配置 gitosis 时遇到了一些问题 http wiki archlinux org index php Setting Up Git ACL Using gitosis http wiki archlin
  • Pandas .describe() 仅返回 int 数据帧的 4 个统计信息(计数、唯一、顶部、频率)...没有最小值、最大值等

    为什么会这样呢 我的数据看起来非常简单明了 它是一个 1 列的整数数据帧 但是 describe 只返回计数 唯一 顶部 频率 而不是最大值 最小值和其他预期输出 注意 describe 功能与其他项目 数据集中的预期相同 pandas 似
  • 无法通过 PyODBC 连接创建数据库

    我在用pyodbc in python 2 7 with MS SQL Server 2008R 这是我创建数据库的代码 SQL代码单独在SQL中工作正常 但在python中执行时崩溃 SQL command IF EXISTS SELEC
  • 在 JMETER 中循环遍历 JSON 响应 +

    我正在使用 Jmeter 进行性能测试并卡在以下点 我从 Webapi 收到 JSON 响应 如下所示 PersonInfoList Person 0 id 1 name Steve 1 Person id 2 name Mark 我需要根
  • 使用 HashSet 创建整数集

    我想创建一个表示整数集的类 使用HashSet
  • 获取 django 的本地时区

    我有一个mysqlDATETIME存储在系统时间 UTC 中的值 我需要将其转换为 django 中的本地时区 这是我目前拥有的 value in mysql timestamp 2013 02 01 22 48 45 settings p
  • 我如何在 C++ 中将数组存储到队列

    queue lt int gt qq for int i 0 i lt N i int cc 2 i i 1 qq push cc N很大但不精确 所以我想使用队列 我想存储很多数组来排队 但是 qq 存储的数组是同一个 我该怎么做 你的代
  • jQuery 悬停滑动?

    检查底部是否有修订版 好吧 问题就到这里了 我有一个li with a div在里面 我试图将鼠标悬停在li得到div向上滑动到视图中 这是 HTML li div h4 title h4 p description p div li 现在
  • Apache Kafka 与 Apache Storm

    Apache Kafka 分布式消息系统Apache Storm 实时消息处理 我们如何在实时数据管道中使用这两种技术来处理事件数据 就实时数据管道而言 在我看来 两者的工作都是相同的 我们如何在数据管道上使用这两种技术 您可以使用 Apa
  • 通过 ConfigurableApplicationContext refresh() 重新加载 Spring 应用程序上下文是否被认为是不好的做法

    我们有一个 Spring 应用程序托管在共享tomcat实例 有时我们必须重新加载 Spring 应用程序上下文 但又不想重新启动 Tomcat 服务器 因为其他应用程序也托管在那里 正在通过以下方式刷新 spring 应用程序上下文 Co
  • 理解 git log --stat 输出

    我试图理解的输出git log stat命令 第一个输出 commit 4c90aee323acc337a37040e02a0a3644f4155738 Date Fri May 1 22 46 11 2015 0400 Submittin
  • java:使用2个线程打印奇偶数

    我正在尝试交替使用 2 个不同的线程打印奇数和偶数 我能够使用等待 通知和同步块来实现它 但现在我想评估我们是否可以在不使用等待 通知和同步的情况下实现它 以下是我的代码 但它不起作用 public class OddEvenUsingAt
  • 在react ComponentDidMount中访问this.props

    我是个新手 无法做出反应 并且陷入了某个项目 问题是我有一个api url in this props从父组件接收 在这个子组件中我想使用api url使用 JSON 获取一些数据 在父组件中我有 Repositories api url
  • Java刷新第二种形式

    我有两种形式 第一个是使用jslider来确定按钮的数量 第二种形式是根据jslider值显示jbuttons 当我单击 jbutton2 时 第二个窗体显示并显示按钮 它工作得很好 但是 我想在第二个表单上创建 jbutton 而不单击第
  • ASP.NET 网站中的 webbrowser 类

    我有一个要求 需要访问一个网页并对其进行截图 为此 我必须创建一个 ASP NET 以便用户可以输入网站 URL 我试图创建一个 Web 浏览器控件 但后来意识到我无法在 ASP NET 网站中创建 Web 浏览器控件 我正在尝试做这样的事
  • printf 中的空格作为分组分隔符

    我知道如何使用逗号printf作为分组分隔符以类似格式打印值1 000 000 00 以我正在使用命令的方式打印它 System out printf 2f value 但如何使用空格作为分组分隔符来格式化值 例如1 000 000 00
  • 从扩展后台或弹出窗口发送消息到内容脚本不起作用

    我知道这个问题已经以不同的方式被反复问过 但我尝试过一遍所有的答案 希望我没有错过任何人 但没有一个对我有用 这是我的扩展程序的代码 显现 name test version 1 1 background scripts contextMe
  • 使用 Express/Node 和 MongoDB 响应 POST 请求

    我正在编写一个程序 该程序使用 React 作为前端 并使用 Express Node API 作为后端 然后在 MongoDB 数据库中执行 CRUD 操作 现在 我正在使用本机 JS fetch API 在前端执行 GET POST 操
  • 如何在 React 中正确捕获 Materialize-CSS datepicker 值?

    我希望创建一个带有日期选择器 https materializecss com pickers html在我的 React 组件中物化CSS https materializecss com 该表单捕获的字段不多 而且结构相当简单 返回的表