繁体   English   中英

如何使用 onChange 和 setState() 将事件目标推送到 state 中数组中的 object

[英]How to push event targets to an object in an array in state with onChange and setState()

我正在尝试获取 onChange 事件并将其推送到 state 中的数组,而不仅仅是 state.JSX 和下面的 state:

state = {
  draftboard: []
}
....


{picks.slice(0,2).map((pick) => (
  <Form.Control   
    onChange={this.onChange}
    defaultValue={pick}
    className='mb-2'
    size='sm'
    name='name'
    label={incrementPicks()}
    as="select" >
      {picks.map((pick) => (
        <option>{pick}</option>
      ))}
  </Form.Control>
))}

我的 onChange 是:

onChange = (e) => { 
  this.setState(state => {
    [e.target.name]: e.target.value
  }
}

问题是这只是将 state 设置为

state: {
    [],
    name: 1
}

我想要的是

state: {
    [{
       name: 1
    }]  
}

我将如何正确设置它? 谢谢!

const value = ev.target.value;
const name = ev.target.name;
this.setState(prevState => ({
  ...prevState,
  draftboard: [
   ...prevState.draftboard,
   { value, name }
  ]
}))

试试这个

const onChange = (e) => {
    e.persist();
    this.setState(prevState => ({
        draftboard: [
            {
                [e.target.name]: e.target.value]
            },
             ...prevState.draftboard
        ]
    }));
};

我不确定你想要什么,我想这可以帮助你。

onChange = e => {        
this.setState(
  {        
  ...this.state,
    draftboard : [
      {
        ...this.state.draftboard[0],
        [e.target.name]: e.target.value
      }
    ]
  }
)

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM