2016-10-11 2 views
0
render: function(){ 
    var id = 2; 

    return(
     <div> 
      <input type="text" ref="id" value={id} /> 
     </div> 
    ) 
} 

위의 변수를 사용하여 버튼에 값을 추가 할 수 있다는 것을 알고 있지만, 콜백 함수가 필요한 mysql 데이터베이스에서 초기 값을 얻고 있습니다.콜백에서 버튼에 값을 더하는 것에 대한 반박

render: function(){ 
    socket.emit('get_value') 
    socket.on('returned_value', function (value) { 
     //does not work 
     id = value 
    } 

    return(
     <div> 
      <input type="text" ref="id" value={id} /> 
     </div> 
    ) 
} 

개의 발광 작동을하지만, socket.on은하지 않습니다 : 내가 값을 시도하고 얻을 socket.io를 사용했다. 또한 socket.io 메서드에서 렌더링을 래핑하여 소켓을 강제로 대기 시키려고 시도했지만 분명히 작동하지 않습니다. app.js 클래스의 값을 index.js로 동적으로 가져 오는 방법을 모르겠습니다. app.js에서

:

socket.on('get_value', function() { 
    mysql.getCurrentValue('*', function (result) { 
    socket.emit('returned_value', result) 
    }); 
}); 

하는 index.js에서 직접 MySQL의 스크립트를 포함하려고 노력하는 (즉, MySQL은 =은 ('mysql.js') 필요) 또한 페이지 렌더링하지 발생하지만 이유를 모르겠다. 나는 socket.io를 사용하는 이유 인 app.js에서 일한다.

+2

은'componentDidMount에 소켓 코드를 삽입() '방식과'ID를 설정 '상태로 (this.setState ({id : id});'그런 다음 입력 값을 this.state.id'로 설정하십시오. –

답변

0

나는 quick example을 작성했습니다. componentDidMount() 방법 소켓 코드를 넣고 상태 (this.setState({ id: id });.이어서 this.state.id 상기 입력의 값을 설정대로 id 세트.

componentDidMount() { 
    socket.emit('get_value') 
    socket.on('returned_value', function (value) { 
     this.setState({id: id}); 
    }.bind(this); // think you have to bind, didn't test 
    } 
    render() { 
    return(
     <input type="text" ref="id" value={this.state.id} /> 
    ); 
    } 
관련 문제