Выберите и обновите дату только в выбранном элементе div, используя response-datepicker - PullRequest
0 голосов
/ 17 октября 2018

Я занимаюсь разработкой приложения реакции.У меня есть 3 div, у каждого есть компонент DatePicker.Я хочу обновить дату выбранного.Когда я меняю дату, она обновляется каждый раз.

Вот код -

import React, { Component } from 'react';
import DatePicker from 'react-datepicker';
import moment from 'moment';

import './App.css';

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

class Application extends React.Component {

    constructor(props) {
        super(props)
        this.state = { date: moment() };
    }

    dateChanged = (d) => {
        this.setState({ date: d });
    }


    render() {
        return (
            <div>
                <div>
                    <DatePicker selected={this.state.date} onChange= {this.dateChanged} />
                </div>
                <div>
                    <DatePicker selected={this.state.date} onChange={this.dateChanged} />
                </div>
                <div>
                    <DatePicker selected={this.state.date} onChange={this.dateChanged} />
                </div>
            </div>
        );
    }
}

export default Application;

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Вот как это можно сделать.

import React, { Component } from 'react';
import DatePicker from 'react-datepicker';
import moment from 'moment';

import './App.css';

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

class Application extends React.Component {

    constructor(props) {
        super(props)
        this.state = { date1: moment(), date2: moment(), date3: moment() };
    }

    dateChanged = (provider, d) => {
        this.setState({ [provider]: d });
    }


    render() {
        return (
            <div>
                <div>
                    <DatePicker selected={this.state.date1} onChange={this.dateChanged.bind(this, "date1")} />
                </div>
                <div>
                    <DatePicker selected={this.state.date2} onChange={this.dateChanged.bind(this, "date2")} />
                </div>
                <div>
                    <DatePicker selected={this.state.date3} onChange={this.dateChanged.bind(this, "date3")} />
                </div>
            </div>
        );
    }
}

export default Application;
0 голосов
/ 17 октября 2018

Для этого вам нужно предоставить ключ и значение в состоянии для каждого

import React, { Component } from 'react';
import DatePicker from 'react-datepicker';
import moment from 'moment';

import './App.css';

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

class Application extends React.Component {

    constructor(props) {
        super(props)
        this.state = { date1: moment(), date2: moment(), date3: moment() };
    }

    dateChanged = (provider, d) => {
        this.setState({ [provider]: d });
    }


    render() {
        return (
            <div>
                <div>
                    <DatePicker selected={this.state.date} onChange={this.dateChanged.bind(this, "date1")} />
                </div>
                <div>
                    <DatePicker selected={this.state.date} onChange={this.dateChanged.bind(this, "date2")} />
                </div>
                <div>
                    <DatePicker selected={this.state.date} onChange={this.dateChanged.bind(this, "date3")} />
                </div>
            </div>
        );
    }
}

export default Application;
...