РЕАКТИРОВАНИЕ триггерная функция из другого компонента: TypeError: refreshmap не является функцией - PullRequest
0 голосов
/ 07 апреля 2020

Я хотел бы перезагрузить страницу, когда будет выбрана дата. У меня есть реквизит с именем refreshmap.

Я новичок ie в реакции.

Я хочу вызвать функцию ("refreshmap") при onChange при изменении даты:

import React, { Component } from 'react';
import DateTimePicker from 'react-datetime-picker';
import MapLeaflet2 from './MapLeaflet2';


class Picker extends Component {
  state = {
    date: new Date(),
  }



  onChange = (date,refreshmap) => this.setState({date},
    function(){

      const DateContext =this.state.date;
      refreshmap()


    })

  render() {

    return (

      <div>
        <DateTimePicker
          onChange={(date) => this.onChange(date, this.refreshmap)} 
          value={this.state.date}
        />
         <MapLeaflet2 date = {this.state.date.toString()}/>


         )}         
      </div>
    );
  }
}

export default Picker;

Здесь я получаю эту ошибку:

TypeError: обновление карты не является функцией

В качестве примера я использую ее для кнопки здесь. Он хорошо работает.

import React from 'react';
import mapButtonStyles from './mapButtonStyles';

const RefreshButton = ({ refreshmap}) => (
  <button
    type="button"
    style={mapButtonStyles}
    className="map-button"
    onClick={refreshmap}
  >
    <i className="fas fa-sync-alt fa-2x" />
  </button>
);

export default RefreshButton;

Он отлично работает с компонентом кнопки , но НЕ с пикапом. Я получаю сообщение об ошибке TypeError: refreshmap не является функцией

Как уже упоминалось, я новичок ie, поэтому любые предложения или замечания будут высоко оценены!

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Полагаю, вы можете просто запустить функцию обновления карты в функции onChange:

onChange = date => this.setState({date},
function(){
  const DateContext =this.state.date;
  this.props.refreshmap();
})

с помощью:

<DateTimePicker
      onChange={this.onChange}
      value={this.state.date}
    />
1 голос
/ 07 апреля 2020

Если я правильно понял вопрос, вы хотите вызвать refreshmap функцию в onChange событии DateTimePicker. Если так, то

onChange={(date) => this.onChange(date, this.props.refreshmap)}

И поймайте ссылку refreshmap в onChange и позвоните соответственно.

onChange = (date, refreshmap) => this.setState({date},
    function(){
      const DateContext =this.state.date;
      refreshmap();
})

Если я неправильно понял вопрос, дайте мне знать.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...