이 예제는 다소 고안되었지만 나와 함께합니다. , 마지막 LINEITEM 선택된 상태 내 구성 요소의 상태를 변경 한 것으로 보인다 (사실 순서) OrderApp.setOrderSelected를 호출의 완료시여러 순차적 상태 업데이트의 올바른 처리
var OrderApp = React.createClass({
getInitialState: function() {
return {
selectedOrders: {},
selectedLineItems: {}
};
},
setOrderSelected: function(order, newSelectedState) {
var mutation = {};
mutation[order.id] = {$set: newSelectedState};
var newSelectedOrders = React.addons(this.state.selectedOrders, mutation);
_.each(order.lineItems, function(lineItem) {
setLineItemSelected(lineItem, newSelectedState);
});
this.setState({selectedOrders: newSelectedOrders});
},
setLineItemSelected: function(lineItem, newSelectedState) {
var mutation = {};
mutation[lineItem.id] = {$set: newSelectedState};
var newSelectedLineItems = React.addons(this.state.selectedLineItems, mutation);
this.setState({seelctedLineItems: newSelectedLineItems});
}
});
: 나는 반작용 구성 요소의 일원으로 두 가지 기능을 말해봐. 내가 setState를에 대한 호출을 일괄 처리되는 반작용 때문입니다 추측하고있어, 그래서 내가 전화있을 때 : 두 번째 기능에
var newSelectedLineItems = React.addons(this.state.selectedLineItems, mutation);
, 나는 원래 상태로 각 시간을 따기하고있어 그렇게 만 마지막 돌연변이가 발생합니다.
부모 함수에서 모든 상태 변이를 수집하고 setState를 한 번만 호출해야합니까? 이것은 나에게 조금 clunky 느낌, 그리고 만약 내가 간단한 솔루션을 놓치고 궁금하네요.
React에 새로운 브랜드이기 때문에 여기에서는 Mixin을 사용하지 않을 것이라고 생각했지만, 분명히 훨씬 더 깨끗해졌습니다. 내 질문 하나 귀하의 솔루션 process.nextTick에 대한 호출이 포함됩니다. 찾을 수있는 유일한 문서는 이것이 노드 특정 라이브러리임을 제안합니다. 클라이언트에서 처리 할 때 업데이트를 버퍼링하는 데 사용할 수있는 유사한 라이브러리가 있습니까? – tnorwood
browserify/webpack을 사용하지 않는 경우 독립형 shim을 다운로드 할 수 있습니다. http://wzrd.in/standalone/process%2fbrowser - 대부분의 사람들은 cjs 모듈을 사용하므로 직접 라이브러리를 컴파일해야합니다. npm은 종종 유일한 배포 매체입니다. – FakeRainBrigand
내 질문에 대한 답변이 정말 마음에 들었습니다. 마이크의 대답은 외부 의존성이 필요 없기 때문에 받아 들여지는 것으로 표시했습니다. 나는 당신의 대답이 더 많은 ReactJS 사고에서 문제에 접근 할 수있는 강력한 사례가 있다고 생각합니다. 도와 주셔서 감사합니다. – tnorwood