【问题标题】:not able to format and assign date in reactjs无法在 reactjs 中格式化和分配日期
【发布时间】:2021-09-30 08:27:09
【问题描述】:

我正在开发一个 react 应用程序,我必须将日期格式化为 DD-MM-YYYY 格式并将其作为参数发送到我的 api。

这是我的代码:

    const params = this.props.listParams;
    const startDate = params.start_date.format('YYYY-MM-DD');
    const endDate = params.end_date.format('YYYY-MM-DD');
    params.start_date = startDate;
    params.end_date = endDate;
    console.log(startDate, endDate);

listParams结构:

const defaultListParams = {
  start_date: '',
  end_date: '',
  msg_id: '',
  page_num: 1,
  page_size: 5,
};

这里listParams 有我的api 的所有参数,start_date 和end_Date 都是listParams 中的时刻对象。我正在格式化并将它们分配给 startDate 和 endDate 变量及其工作,但是当我将其重新分配回 params.start_dateparams.end_date 时,我收到以下错误:

index.js?bbc4:258 Uncaught TypeError: date.get is not a function
    at get$1 (index.js?bbc4:258)
    at getMonth (index.js?bbc4:366)
    at DatePicker.componentWillReceiveProps (index.js?bbc4:2450)
    at callComponentWillReceiveProps (react-dom.development.js?7f13:13389)
    at updateClassInstance (react-dom.development.js?7f13:13599)
    at updateClassComponent (react-dom.development.js?7f13:16989)
    at beginWork$1 (react-dom.development.js?7f13:18502)
    at HTMLUnknownElement.callCallback (react-dom.development.js?7f13:348)
    at Object.invokeGuardedCallbackDev (react-dom.development.js?7f13:398)
    at invokeGuardedCallback (react-dom.development.js?7f13:455)

我无法弄清楚错误是什么。任何潜在客户都会得到重视。

【问题讨论】:

    标签: javascript reactjs date datepicker momentjs


    【解决方案1】:

    除了再次为你的 props 赋值之外,你还为 start_dateend_date 赋值。

    format() 为您提供矩对象的字符串表示形式。

    根据我从您的错误日志中了解到的更多信息,您将此字符串传递给您的日期选择器,它可能希望参数为 DateMoment 对象。

    因此,例如,如果params.start_date 是一个字符串,那么您需要构造Moment 对象,如moment(params.start_date, 'YYYY-MM-DD')。如果它是一个Moment 对象(我假设是因为你没有收到关于format() 的任何错误),那么你不需要使用format()

    【讨论】:

      【解决方案2】:

      因为您试图更改 props 中不可写的值。

      看到这个:Props are Read-Only

      【讨论】:

      • 但我先将我的 props 值分配给 params,然后再分配它
      • 你把this.props.listParams的指针给params吧?所以params.start_date = startDate; 表示this.props.listParams.start_date = startDate;。实际上,您可以将用于更改父组件的 startDate 和 endDate 的 setter 传递给 props。永远记住,react 是一个使用单向数据流的框架。
      【解决方案3】:

      我强烈建议您提供更多代码,因为您的错误是 date.get is not a function ,但您没有向我们提供日期和获取方法。我认为这是因为你试图调用 .get 一些它不能被调用的东西。此外尝试 console.log(date) 看看这个日期是什么(:。然后评论回来

      【讨论】:

      • No date.get is nowhere is defined,这就是为什么我对这个错误感到困惑
      • 此外,为什么名称是 defaultListParams 而不是 listParams?也许与此有关?另外,您是否尝试将日期初始化为 new Date() 以使其成为对象并调用其上的函数?
      • 不,defaultparamslist 在 redux reducer 中,我将其分配为初始状态的 listParams
      猜你喜欢
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-10
      • 2019-08-11
      相关资源
      最近更新 更多