react-async과 함께 node.js를 사용하고 있습니다. React-async는 비동기 방식으로 react.js를 사용하는 데 사용됩니다. 아약스 전화를 걸려면 super-agent을 사용하고 있습니다. PostList
구성 요소는 최상위 부모 구성 요소입니다. setTopmostParentState
메서드를 통해 구성 요소의 상태를 변경할 수 있습니다. 이 메서드를 Comp4
에서 호출하고 싶습니다. 이 메소드의 매개 변수는 '슈퍼 에이전트'노드 미들웨어를 사용하는 ajax 호출에서 가져옵니다.react.js 깊게 중첩 된 자식의 최상위 부모 요소 상태 변경
상태를 Comp4에서 어떻게 변경할 수 있습니까? 상위 구성 요소이고 하위 구성 요소 문제 인 경우 상태 변경 방법은 하위 구성 요소에 prop
으로 쉽게 전달 될 수 있습니다. 그러나 일부 중첩으로 인해 깊이 중첩 된 자식에서 최상위 부모로 매개 변수를 전달하기가 어렵습니다.
코드 조각 :
이var Comp4 = React.createClass({
clickHandler: function() {
request.get('/api/prods_find/' + cat_id + '/' + subcat_id,
function(resp) {
var prods_menu = resp.body;
* * * //CALL setTopmostParentState of the PostList component with the value prods_menu***
});
},
render: function() {
'<div onClick={this.clickHandler}>Target element</div>'
}
});
var Comp3 = React.createClass({
render: function() {
<Comp4> < /Comp4>
}
});
var Comp2 = React.createClass({
render: function() {
<Comp3> < /Comp3>
}
});
var Comp1 = React.createClass({
render: function() {
<Comp2> < /Comp2>
}
});
var PostList = React.createClass({
mixins: [ReactAsync.Mixin],
getInitialStateAsync: function(cb) {
request.get('http://localhost:8000/api/posts', function(response) {
cb(null, {
prods_menu: response.body
});
});
},
setTopmostParentState: function(prods_menu) {
this.setState({
prods_menu: prods_menu
});
},
render: function() {
var prods = this.state.prods_menu.prods;
var menu = this.state.prods_menu.menu;
return (
<Comp1> < /Comp1>
);
}
});
를이 사용 사례를 들어 [플럭스] (HTTP : // 페이스 북. github.io/flux/)가 발명되었습니다. 당신이하고 싶은 것은 다른 컴포넌트 (부모 컴포넌트)에게 그 상태를 업데이트하도록 알리는 액션을 당신의 컴포넌트에서 트리거하는 것입니다. –
@limelights, node-react 프로젝트가 중간 상태에 있기 때문에 아무런 작업도하지 않아도됩니까? –
유일한 다른 방법은 최상위 부모에서 가장 깊은 자식까지 함수에 대한 참조를 전달하는 것입니다. 사용 된 경우 부모에서 상태가 변경됩니다. –