2017-03-31 10 views
0

からコンポーネントに反応しますコンポーネントの外側からDashboardcreateMessageメソッドにアクセスする方法はありますか?のアクセスは、ソケットIOリスナー

またDashboardcomponentは常にイベントをリッスンし、私はこのような何かを行うことができます持ってする方法があります:

var socket = io.connect() 

const Dashboard = React.createClass({ 

    alwaysListenForEvent: function() { 
     socket.on('new-message', (data) => { 
      console.log("ALL CLIENTS SHOULD GET THIS MESSAGE") 
      this.createMessage(data.id, data.body, data.context, data.urgent, data.customContext) 
     }) 
    } 

    createMessage: function(id, body, context, urgent, customContext) { 

    this.setState({ 
     messages: [ 
     ...this.state.messages, 
     {id: id, user_id: this.state.currentUser, body: body, context: context, urgent: urgent, customContext: customContext} 
     ] 
    }) 
    } 
    }) 

答えて

0

あなたはソケットHoCcontainer componentであなたのダッシュボードコンポーネントを包むことができます。

例コード:

class SocketListener extends React.Component { 
    state = { 
    messages: [] 
    } 
    componentDidMount() { 
    socket.on('new-message', (data) => { 
     this.setState({ messages: this.state.messages.concat(data) }) 
    }); 
    } 

    render() { 
    return (
     <Dashboard 
     messages={this.state.messages} 
     /> 
    ) 
    } 
} 

ダッシュボードコンポーネントがメッセージについて何を知っている必要はありませんこの方法です。

関連する問題