자식 구성 요소에서 부모 구성 요소를 다시 렌더링 할 수 없습니다. 하위 클래스에 componentDidMount
을 전달하고 난 다음에이를 호출하고 부모에게 다시 렌더링을 요청합니다. render 함수가 호출되었지만 내용은 변경되지 않습니다. 뭐가 문제 야?자식 구성 요소에서 부모 구성 요소 업데이트
var Parent = React.createClass({
getInitialState: function() { return {content: 'clean'}; },
componentDidMount: function() {
this.setState({content: 'changed!'});
},
render: function() {
return React.createElement('div', {rerender: this.componentDidMount.bind(this)}, this.state.content);
}
});
var Child = React.createClass({
render: function() {
return React.createElement('div', {onClick: this.handleClick}, 'click me');
},
handleClick: function() {
this.props.rerender();
}
});
ReactDOM.render(
React.createElement(ReactRouter.Router, {history: ReactRouter.browserHistory},
React.createElement(ReactRouter.Route, {path: '/parent', component: Parent})
)
, document.getElementById('content'));
클래스 메소드를 자식 컴포넌트에 소품 콜백으로 보내면, 부모 컴포넌트에서 콜백은'setState'가 필요합니다. –
그렇지만 내 예제에서했던 것일 것입니다. – user99999
'this.componentDidMount'를 이벤트 콜백으로 사용하지 마십시오. :) 당신은 부모 컴포넌트에서'rerender'를 처리 할 자신의 함수를 생성해야합니다. 부모 컴포넌트가 마운트 될 때 상태가'content : changed! '가 될 것이므로 물론 기회가되지 않을 것입니다. 그 같은 기능은 국가가 동일하게 될 것입니다 .. – Hardy