Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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 在react js中更新状态_Javascript_Reactjs - Fatal编程技术网

Javascript 在react js中更新状态

Javascript 在react js中更新状态,javascript,reactjs,Javascript,Reactjs,我有一段代码,它从MaterialUI呈现一个下拉组件,并用来自WS 我设置了一个初始值,即来自WS的firs元素,因此当我第一次呈现页面时,我可以在下拉列表中看到正确的值 我的问题是,当我尝试在下拉列表中选择一个不同的值时,我不能这样做,我想是因为我没有更新状态,我有一个名为handleChange的方法,但我缺少一些东西,但不知道是什么 这是代码,希望有人能帮上忙,我是新的反应,仍然要练习更多 import React, { Component } from 'react'; import

我有一段代码,它从MaterialUI呈现一个下拉组件,并用来自WS

我设置了一个初始值,即来自WS的firs元素,因此当我第一次呈现页面时,我可以在下拉列表中看到正确的值

我的问题是,当我尝试在下拉列表中选择一个不同的值时,我不能这样做,我想是因为我没有更新状态,我有一个名为handleChange的方法,但我缺少一些东西,但不知道是什么

这是代码,希望有人能帮上忙,我是新的反应,仍然要练习更多

import React, { Component } from 'react';
import DropDownMenu from 'material-ui/DropDownMenu';
import MenuItem from 'material-ui/MenuItem';

export default class WebserviceTest extends Component {
  constructor() {
    super();
    this.state = {
      data: [],
      selected: ''
    };
    this.renderOptions = this.renderOptions.bind(this);
    this.handleChange = this.handleChange.bind(this);
  }

  componentDidMount() {
    const url = 'https://randomuser.me/api/?results=4';

    fetch(url)
      .then(Response => Response.json())
      .then(findResponse => {
        console.log(findResponse);

        this.setState({
          data: findResponse.results,
          selected: findResponse.results[0].name.first
        });
        console.log('----- ', this.setState.selected);
      });
  }

  handleChange(value) {
    this.setState({ selected: (value) });
  }

  renderOptions() {
    return this.state.data.map((dt, i) => {
      return (
          <MenuItem
            key={i}
            value={dt.name.first}
            primaryText={dt.name.first} />
      );
    });
  }

  render() {
    return (
      <div>
        <DropDownMenu value={this.state.selected} onChange={this.handleChange}>
          {this.renderOptions()}
        </DropDownMenu>
      </div>
    );
  }
}
欢迎任何帮助


提前感谢。

在“材质UI”下拉列表中,所选值显示为第三个参数。因此,在handleChange方法中使用类似的方法


Ref:

谢谢您的时间,我添加了,它成功了。。。我不明白的是,它们显示为灰色的事件和索引,所以我删除了它们,但似乎这些参数需要存在…我认为这是因为您没有使用事件和索引。你根本不用担心
handleChange(event, index, value) {
 this.setState({ selected: (value) });
}