2017-09-18 4 views
0

J'utilise le module DatePicker pour une application de gestion des tâches de réaction. Il s'intègre bien sauf pour la première fois en changeant la date, il renvoie toujours un objet au lieu de la date comme prévu. Cependant, il renvoie magiquement la sortie correcte si je choisis une autre date après. Voici mon code pour cette partie de ma forme redux:Redux-form DatePicker renvoie l'objet Moment au lieu de la date de la première valeur sélectionnée

import React, { Component } from 'react'; 
import { Field, reduxForm } from 'redux-form'; 
import moment from 'moment'; 
import DatePicker from 'react-datepicker'; 

import 'react-datepicker/dist/react-datepicker.css'; 

class TaskForm extends Component { 

    constructor (props) { 
    super(props) 
    } 


    render() { 

    const { handleSubmit } = this.props; 

    const renderDatePicker = ({input}) => (
     <div> 
      <DatePicker {...input} dateForm="MM/DD/YYYY" selected={input.value ? moment(input.value, 'MM/DD/YYYY') : null} /> 
     </div> 
    ); 


    return (
     <div> 
     <form onSubmit={ handleSubmit}> 
      <div> 
      {/* Date selection */} 
      <label>Date:</label> 
      <Field name="date" component={renderDatePicker} /> 
      </div>  
      <button type="submit">Save</button> 
     </form> 
     </div> 
    ) 
    }; 
}; 

export default reduxForm({form: 'taskForm'})(TaskForm); 

est ici la valeur que je console.logged sur:

enter image description here

Merci pour l'aide à l'avance!

Répondre

1

valeur Moment est un objet toujours, pour obtenir le format exact que vous voulez, il suffit d'utiliser .format, par exemple:

moment(date).format('MM/DD/YYYY') 
+0

Merci, votre réponse m'a été utile, mais je devais ruser un peu. Puisque accepte les objets moment() pas les chaînes, je dois ajouter une condition à la valeur de retour pour vérifier si la valeur retournée est un objet, si oui, formater, sinon le laisser tel quel . –

+0

Content que cela a aidé. :) –