【问题标题】:React How to pass field date from datepicker as Api url parameterReact 如何从 datepicker 传递字段日期作为 Api url 参数
【发布时间】:2021-10-24 21:49:58
【问题描述】:

我正在从以日期为参数的 API 获取数据
这个日期来自 react 的材料选择器,日期格式应该是 yyyy-MM-dd,但是当我用我的 datepicker 选择一个日期时,它会将日期传递为

2021 年 10 月 12 日星期二 00:00:00 GMT+0000(格林威治标准时间) 我希望 datpiecker 发送的日期是我要求的格式:yyyy-MM-dd 这是我的代码的一部分:

import React, { useState, useCallback, useEffect } from "react";
import DateFnsUtils from "@date-io/date-fns";
import {DatePicker, KeyboardDatePicker,MuiPickersUtilsProvider,} from "@material-ui/pickers";

function ExchangeRate() {
  

    const [date, setDate] = useState(moment().format("YYYY-MM-DD"));
   

    useEffect(() => {
   
  
    function getExchangeRates(base, currencyCode) {
       
        const url = `https://data.fixer.io/api/${date}?&base=USD`;

        
        return fetch(url)
            .then((res) => res.json())
            .then(handleAPIErrors)
            .then((res) => res.rates);
return (
          
          
                    </CSelect>
               
              


                  
          <MuiPickersUtilsProvider utils={DateFnsUtils}>
    
            <KeyboardDatePicker
            autoOk
              label="Material Date Picker"
              format="yyyy-MM-dd"
              animateYearScrolling
              value={date}
              onChange={date => setDate(date)}
            />
            
          </MuiPickersUtilsProvider>

【问题讨论】:

    标签: arrays reactjs datepicker fetch


    【解决方案1】:

    在 api URL 中使用时,您可以使用 moment 格式化您的日期,如下所示:

    const url = `https://data.fixer.io/api/${moment(date).format("YYYY-MM-DD")}?&base=USD`;
    

    或者,如果您想在状态中始终以该格式存储日期,您可以更改 onChange 事件,如下所示:

    onChange={date => setDate(moment(date).format("YYYY-MM-DD"))}
    

    KeyboardDatePicker 组件中,format 属性仅定义日期在该组件中的显示方式,而不是在onChange 事件中的使用方式。

    【讨论】:

    • 谢谢 Houssam,您的解决方案非常适合 onChange 我希望每次更改日期时都获取 API,如 useCallback,该怎么做?
    • 您可以通过将date 状态变量更改时要执行的代码包装在useEffect 挂钩中并作为第二个参数(依赖数组)传递以下内容来实现此目的:@987654331 @。这将导致useEffect(() =&gt; { ... }, [date]);。结果,该效果将在该变量的每次更改时执行。
    • 这个可以参考文档:reactjs.org/docs/…
    猜你喜欢
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 2015-03-18
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    相关资源
    最近更新 更多