2016-05-29 3 views
-1

Почему setState() меняет все значения состояния? У меня 4 входа. Первые два входа используют функцию автозаполнения входа из карт google api.React.js, почему setState меняет все значения состояния?

, когда я ввожу текст в первый вход - функция автоматического завершения работает нормально. Когда я ввожу текст во второй вход, первый вход над написанным.

handleChange(name, value){ 
    this.setState({ 
     [name]: value 
    }); 
} 

Если вам нужна более подробная контекст, пожалуйста, не стесняйтесь обращаться к нам или клонировать этот репозиторий:

https://github.com/malexanders/roadtrip_react

ответ

1

Попробуйте

handleChange(name,value) { 
    let newState = {} 
    newState[name] = value 
    this.setState(newState) 
} 
+0

отдача ошибка, неожиданный маркер на первый квадратной скобки в строке «пусть NewState [имя] = значение – matthewalexander

+0

изменил первый пусть вар, и удалил вторую аренду. И он исправил ошибку. Но поведение такое же, как и раньше. Можете ли вы посмотреть на поведение, запустив его в своем браузере? Я в тупик ... – matthewalexander

+0

second let не нужен –

0

, чтобы ответить на ваш вопрос, вы должны изменить несколько вещей.

Прежде всего, для этого вам не нужен новый объект. во-вторых, вы должны изменить способ, которым вы это называете

<Input id="from" className={style.mapFormInput} type='text' label='Origin' hint="Enter a Location" placeholder='' name='from' value={this.state.from} onChange={this.handleChange.bind(this, 'from')} icon="add_location" /> 

В этой строке вы уже указываете имя на входе. поэтому просто используйте это в своем состоянии.

handleChange = (event) => { 
    this.state[event.target.name] = event.target.value 
    this.setState(this.state) 
} 

// change your render on the input to be this 

<Input id="from" className={style.mapFormInput} type='text' label='Origin' hint="Enter a Location" placeholder='' name='from' value={this.state.from} onChange={this.handleChange} icon="add_location" /> 
+0

вам не нужно связывать это onChange? – matthewalexander

+0

Не в рендеринг. Я использую синтаксис стрелки, чтобы связать это с функцией объявления –

Смежные вопросы