从子组件更新父组件
Updating parent component from child component
我不能从子组件中渲染父组件-我将componentDidMount
作为道具传递给子类,然后在那里调用它,并期望父组件进行渲染。调用呈现函数,但内容保持不变。怎么了?
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'));
componentDidMount()
是组件完成渲染时调用的生命周期函数。
调用它似乎是在绕过整个重渲染过程。
你应该创建自己的函数。
changeContent: function () {
this.setState({content: 'changed!'});
},
然后将changeContent()
传递给rerender
。
为了解决所有这些问题,Facebook的家伙们提出了单向数据流模式。你的子组件不应该知道父组件的存在,而是应该改变某种状态(Flux、Redux、Reflux)。对状态的更改将触发父组件的重新呈现。
相关文章:
- 调度没有'无法立即更新组件
- React js更改状态不会更新组件
- 如何使用JavaScript更新JSP页面的一些组件
- 如何在加载Angular2.RC1子组件时更新它
- ReactJS组件中显示的视频未更新
- 如何创建独立于数组更新的组件列表
- 组件道具更改后更新redux存储
- 如果我不应该在组件WillUpdate中调用setState,如何更新状态(使用ReactJS)
- React 应该组件更新太多的递归
- 在PrimeFaces中的某些组件更新时自动调用javascript
- 反应:不必要的组件更新
- 通过子组件更新父数据
- 余烬子组件通过父组件更新来自查询参数的属性
- 从子组件更新父组件
- 从React组件更新模型/集合
- 通过React Native中的子组件更新父组件
- Angular 2更改检测,ngClass模型由同级组件更新,但模板确实更新了'不要精神抖擞
- 如何从父组件更新子组件的状态
- React - 如何在组件更新后获取真正的 DOM 元素
- 淘汰组件更新未被父视图模型订阅的可观察对象