Я получаю безымянное состояние после onChange в файле ввода типа - ReactJS - PullRequest
0 голосов
/ 10 февраля 2020

Я использую тип файла ввода для загрузки изображений в strapi.io. Я заметил, что в состоянии на инструментах реагирования разработчика он генерирует неназванное состояние, показанное на рисунке ниже.

enter image description here

состояние

constructor(props) {
    super(props);
    this.state = {
      first_name: '',
      last_name: '',
      address: '',
      email:'',
      city: '',
      country: '',
      zipcode: '',
      gcash_number: '',
      paypal_email: '',
      error: '', 
      bank_account: '',
      bank_name: ''
    }
    this.handleOnChange = this.handleOnChange.bind(this)
  }

JSX

<div className='col-sm-auto'>
  <label htmlFor='avatar' >Avatar</label>
   <input type='file' className="form-control-file form-control-sm" onChange={this.handleOnChange('avatar')}/>            
</div>

Функция handleOnChange

handleOnChange = input => (event) => {
    if (event.target.type === 'file') {
      this.setState({avatars: event.target.files[0]})
    }
    this.setState({
      [event.target.name]: event.target.value
    })
  }

может объяснить, как это произошло ? и как поставить название штата на это?

Ответы [ 2 ]

2 голосов
/ 10 февраля 2020
this.setState({
    [event.target.name]: event.target.value
});

name не определено

Попробуйте

<input name="myInputName" type='file' className="form-control-file form-control-sm" onChange={this.handleOnChange('avatar')}/>  

0 голосов
/ 10 февраля 2020

Лучше определить идентификатор для элемента ввода:

<input id="InputID" type='file' className="form-control-file form-control-sm" onChange={this.handleOnChange('avatar')}/>

Поскольку вы использовали htmlFor в теге label И попробуйте следующий код:

this.setState({ [event.target.id]: event.target.value });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...