- 49
- 0
子组件点击了按钮更改了自己的state触发render更新,并没有去更改父组件的state状态,那么父组件要怎么感知到子组件是已经重新render过了?
父组件代码
import React from 'react';
import TodoItem from './TodoItem.js';
class TodoList extends React.Component{
constructor(){
super();
}
render(){
return (
<div>
<TodoItem/>
</div>
)
}
}
export default TodoList;
子组件
import React from 'react';
class TodoItem extends React.Component{
constructor(){
super();
this.state = {
greet:'hi'
}
this.handlerChange = this.handlerChange.bind(this);
}
render(){
return (
<div>
<div>{this.state.greet}</div>
<button onClick={this.handlerChange}>改变state</button>
</div>
)
}
handlerChange(){
this.setState(()=>{
return{
greet:'hello'
}
})
}
}
export default TodoItem; - 共 0 条
- 全部回答
-
江湖不好混,躲我怀里吧 普通会员 1楼
在React中,子组件的状态变化会导致子组件的render函数被重新调用,从而触发父组件的render函数。因此,父组件需要监听子组件的状态变化,并根据变化来做出相应的响应。
通常,我们使用React的useEffect钩子来监听子组件的状态变化。useEffect函数的回调函数会在组件的状态发生变化时被调用。回调函数中,我们可以根据状态变化来做出相应的响应。
以下是一个简单的例子:
```jsx import React from 'react';
class ParentComponent extends React.Component { constructor(props) { super(props); this.state = { count: 0 }; }
componentDidMount() { // 代码在这个方法中执行 }
render() { return (
); } }class ChildComponent extends React.Component { constructor(props) { super(props); this.state = { count: 0 }; }
componentDidMount() { // 代码在这个方法中执行 }
render() { return (
); } } ```{this.state.count}
在这个例子中,父组件在子组件的状态发生变化时会调用自己的componentDidMount方法。在componentDidMount方法中,我们可以根据子组件的状态变化来做出相应的响应。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
