2017-11-21 6 views
1

이 코드는 재질 ui의 드롭 다운 구성 요소를 렌더링하며 WS에서 오는 데이터로 채워집니다.반응 js의 상태 업데이트

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 드롭에서

답변

1

는, 선택된 값은 제 인자로 보인다. 그래서 handleChange 방법이 같은 것을 사용

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

참조 : 당신의 시간을 http://www.material-ui.com/#/components/dropdown-menu#properties

+0

감사합니다, 나는 추가하고 일했다 ... 내가 이해하지 못하는거야 것은 그들이 회색으로 나타날 것입니다 (이벤트 및 색인) 그래서 그들을 제거했지만 그 매개 변수가 거기에 있어야 할 것 같습니다 ... – kennechu

+0

그래서 그것은 '회색으로'나타 났습니까? 편집부에서? – Panther

+0

이벤트 및 색인을 사용하지 않았기 때문에 생각합니다. 너는 전혀 걱정할 필요가 없다. – godsenal

관련 문제