react-brasil / forum

:beer: Portando discussões feitas em grupos (Facebook, Google Groups, Slack, Disqus) pra issues
MIT License
30 stars 0 forks source link

Como utilizar onChange #4

Closed gustavo-silveira closed 5 years ago

gustavo-silveira commented 5 years ago

Senhores, estou com esse problema, como posso resolver ? Estou querendo trocar a variavel de acordo com o meu objeto

` Line 405: Parsing error: Unexpected token, expected "}"

403 | id='calendarIdaVolta' 404 | name='calendarIdaVolta'

405 | onChange={this.state[item.variavel]=> { | ^ 406 | this.setState({ 407 | date: date 408 | });`

Objeto const map = { dateOne: { stateKey: 'date', variavel: date, handler: this.onCalendarOne, }, dateTwo: { stateKey: 'date2', variavel: date, handler: this.onCalendarTwo, } }; const item = map[name];

Obrigado

nicholasess commented 5 years ago

@gustavo-silveira, esse this.state[item].variavelé uma função? por que a estrutura pra onChange é a onChange={()=> {})

gustavo-silveira commented 5 years ago

Esse 'this.state[item].variavel' do objeto

const map = {
  dateOne: {
    stateKey: 'date',
    variavel: date,
    handler: this.onCalendarOne,
  },
  dateTwo: {
    stateKey: 'date2',
    variavel: date,
    handler: this.onCalendarTwo,
  }
};

A estrutura onChange está assim

onChange={this.state[item.variavel]=> { this.setState({ date: date }); }}

nicholasess commented 5 years ago

@gustavo-silveira qual é a intenção desse código? ai fica mais fácil de te guiar

gustavo-silveira commented 5 years ago

A intenção é mudar a variavel "date" que está no onchange de acordo com a variavel "variavel" do objeto "map". No objeto "map" a variável "variavel" estão iguais, mas seria date1 e date 2. O correto é mudar a variavel de acordo com o a chamada, "dateOne" ou "dateTwo"

Como posso fazer essa mudança de variavel ?

nic commented 5 years ago
const map = {
  dateOne: {
    stateKey: 'date',
    variavel: date,
    handler: this.onCalendarOne,
  },
  dateTwo: {
    stateKey: 'date2',
    variavel: date,
    handler: this.onCalendarTwo,
  }
};

// item pode ser "dateOne" ou "dateTwo"
function onChange(item) {
  const newState = {
    date: item.variavel
  };
  this.setState(newState);
}

//< Button onClick={()=> onChange(map.dateOne)} />
//< Button onClick={()=> onChange(map.dateTwo)} />

@gustavo-silveira Isso que está tentando fazer?

nicholasess commented 5 years ago

@gustavo-silveira resolveu a issue?