Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将状态元素推送到状态数组?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何将状态元素推送到状态数组?

Javascript 如何将状态元素推送到状态数组?,javascript,reactjs,Javascript,Reactjs,我目前正试图将我的状态元素user_number_X推入数组this.state.results.numbers,但我的输入处理程序函数不起作用 如何重写它,使其将输入值推入数组 这是我的密码: export default class InputArea extends React.Component { constructor(props){ super(props); this.state = { draw_number: '', user_nu

我目前正试图将我的状态元素user_number_X推入数组this.state.results.numbers,但我的输入处理程序函数不起作用

如何重写它,使其将输入值推入数组

这是我的密码:

export default class InputArea extends React.Component {
  constructor(props){
    super(props);
    this.state = {
      draw_number: '',
      user_number_1: '',
      user_number_2: '',
      user_number_3: '',
      user_number_4: '',
      user_number_5: '',
      user_number_6: '',
      results : {
        numbers: [],
        draws: ''
      }
    }
  }

  /* handledrawsChange = event => {
    this.setState({
      event
    })
  } */

  inputHandler = event => { 
    this.setState({[event.target.name]: event.target.value});
    this.state.results.numbers.push(event.target.value)
    // this.state.results.numbers.push(event.target.value)//this.setState({number: this.state.results.numbers.push(parseInt(event.target.value))});
  }

  componentDidMount() {
    fetch("http://localhost:8080/simulate", {
      method: "POST",
      body: this.state.results
    });
  }


  render() {
    console.log(this.state);
      return (
        <InputField>
          <InputWrapper>
            <Label>1st number</Label>
            <Input name="user_number_1" type="number" maxlength="2" value={this.state.user_number_1} onChange={this.inputHandler} required></Input>
            <Label>2nd number</Label>
            <Input name="user_number_2" type="number" maxlength="2" value={this.state.user_number_2} onChange={this.inputHandler} required></Input>
            <Label>3rd number</Label>
            <Input name="user_number_3" type="number" maxlength="2" value={this.state.user_number_3} onChange={this.inputHandler} required></Input>
            <Label>4th number</Label>
            <Input name="user_number_4" type="number" maxlength="2" value={this.state.user_number_4} onChange={this.inputHandler} required></Input>
            <Label>5th number</Label>
            <Input name="user_number_5" type="number" maxlength="2" value={this.state.user_number_5} onChange={this.inputHandler} required></Input>
            <Label>6th number</Label>
            <Input name="user_number_6" type="number" maxlength="2" value={this.state.user_number_6} onChange={this.inputHandler} required></Input>
            <Label>Number of draws:</Label>
            <Input name="draw_number" type="number" value={this.state.draw_number} onChange={this.inputHandler} required></Input>
          </InputWrapper>
          <Button type="submit" /*onClick={this.drawsHandler}*/>Let's win!</Button>
        </InputField>
      )
  }
}
您可以使用concat来实现这一点,并对更干净的代码使用对象分解

const {results} = this.state; 
const {numbers} = results
this.setState({results:{...results,numbers:numbers.concat([event.target.value])}}

是否要在每次输入更改时在此.state.results.numbers数组中放入新值?此代码在许多级别上都是错误的。您正试图通过手动更改状态来改变状态。受控组件的实现已中断。您正在更改受控组件的事件以更改另一个变量。我应该在全局范围内还是在inputHandler方法中执行此操作?显然是在inputHandler中,并保持另一行this.setState{[event.target.name]:event.target.value}正常工作,但它会将大量不必要的数字推入数组,例如,如果我输入23,它会将[2,23]添加到array@Leocete您在Use onChange in上使用的事件将解决问题。我使用的是onChange