首页 文章

从子组件更新父组件

提问于
浏览
0

我无法从子组件中重新呈现父组件 - 我将 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'));

2 回答

  • 0

    componentDidMount() 是组件完成渲染时调用的生命周期函数 .

    称它为你正在规避整个重新渲染的过程 .

    您应该创建自己的功能 .

    changeContent: function () {
          this.setState({content: 'changed!'});
       },
    

    然后将 changeContent() 传递给 rerender .

    一般来说,避免传递React的LifeCycle方法!

  • 0

    为了解决所有这些问题,Facebook的人们提出了单向数据流模式 . 您的子组件不应该知道父组件,而是应该更改某种状态(Flux,Redux,Reflux) . 对状态的更改将触发父组件的重新呈现 .

相关问题