Как получить имя InputNumber в antdesign для реакции? - PullRequest
0 голосов
/ 25 мая 2019

Я работаю с antdesign для ReactJS.

Мой код выглядит так:

<InputNumber
    formatter={value => `${value} hrs`}
    parser={value => value.replace(' hrs', '')}
    type="text"
    onChange={props.changed}
    name='hours'
    min={0}
    max={24}
    defaultValue={8} />

changehandler:

  changeHandler = (event, id) => {
     console.log(event + ' ' + typeof event);
     console.log(event.target.name + ' ' + typeof event.target.name);
  }

До сих пор я пытался посмотретьдля этого и кажется, что другие сталкивались с той же проблемой: https://github.com/ant-design/ant-design/issues/8683

Журнал консоли в моем changeHandler fxn возвращает число и неопределенный для второй строки.

Как можноЯ получил имя?

Ответы [ 2 ]

2 голосов
/ 25 мая 2019

onChange возвращает только то значение, которое было изменено

Здесь можно использовать функцию карри.

  changeHandler = name => value => {
     console.log(name, value);
  };

  <InputNumber
    onChange={this.changeHandler("hours")}
  />
0 голосов
/ 25 мая 2019

Если вы используете обычную функцию вместо функции стрелки в качестве обработчика изменений, this внутри этой функции будет event.target, и вы можете получить name, а также value из this.Однако вы не сможете получить доступ к this для класса реагирования, поэтому вам придется использовать функцию закрытия для сохранения значения this для класса реакции.

<InputNumber
    formatter={value => `${value} hrs`}
    parser={value => value.replace(' hrs', '')}
    type="text"
    onChange={props.changed(this)}
    name='hours'
    min={0}
    max={24}
    defaultValue={8} />

  changeHandler(reactThis){
    var classThis=reactThis;//use classThis to access this pointing to react class
    return function(value){
      console.log(this.name,this.value,value);//will print name, current value and changed value
      //classThis.setState({}) will work here
    };
  } 

А в этом

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