React에서는 단방향 흐름이 가장 좋은 방법입니다. 이를 위해 이벤트 이미 터를 사용해야합니다.
웹 소켓, SSE 또는 폴링을 사용하여 JSON을 서버에서 가져옵니다 (중요하지 않음). 봉투 형식이어야합니다. 이것은 채팅 응용 프로그램의 예입니다. 서버에서이 메시지를받을 때
{
"type": "new-message",
"payload": {
"from": "someone",
"to": "#some-channel",
"time": 1415844019196
}
}
, 당신은 이벤트로 방출한다.
var handleMessage = function(envelope){
myEventEmitter.emit(envelope.type, envelope.payload);
};
이것은 발송자의 한 형태입니다. 단순히 이벤트를 가져 와서 관심있는 사람에게 브로드 캐스트합니다.일반적으로 이해 당사자는 구성 요소 또는 상점 (유동성 있음)이 될 것입니다.
var MessageList = React.createClass({
componentDidMount: function(){
myEventEmitter.on('new-message', this.handleNewMessage);
},
handleNewMessage: function(message){
if (message.to === this.props.channel) {
this.setState({messages: this.state.messages.concat(message)});
}
},
componentWillUnmount: function(){
myEventEmitter.removeListener(this.handleNewMessage);
},
...
});
사용자가 메시지를 제출하면 'user-new-message'이벤트가 발생합니다. handleMessage
을 구현하는 코드의 동일한 부분은이 이벤트를 수신하고 서버에 메시지를 보내고 UI를 업데이트 할 수 있도록 새 메시지 이벤트를 내 보냅니다.
받은 메시지의 목록을 코드의 다른 부분 (구성 요소 아님)에 보관하거나 서버에서 최신 메시지를 가져올 수 있습니다.
서버에서 보내는 html은 일반적으로 매우 나쁘고 융통성이 없으며 부적절한 아이디어입니다. AJAX는 클라이언트에 데이터를 가져 오기위한 것이며, 클라이언트는이 데이터를 사용자에게 제시하는 방법을 선택합니다.
플럭스를 읽는 것이 표준 접근 방식 인 것 같습니다.이 경우 클라이언트 측 렌더링이 어느 정도 옵션일까요? – ioseph
Flux는 하나의 접근 방법이며 일부 사람들은 그것을 사용하고 다른 사람들은 사용하지 않습니다. 질문은 다음과 같습니다. 서버에서 렌더링 할 때 어떤 이유가 있습니까? – FakeRainBrigand
저의 생각으로는 앱이 궁극적으로 매우 복잡해지면서 더 느린 기기/기기에서 성능을 향상시킬 수있었습니다. – ioseph