首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >属性更改时componentDidMount未触发

属性更改时componentDidMount未触发
EN

Stack Overflow用户
提问于 2021-05-02 21:36:01
回答 4查看 77关注 0票数 0

我的react App上有一个嵌套组件。

代码语言:javascript
运行
复制
class Home extends React.Component {
  constructor() {
    super();
    this.state = {id : "1"};
  }
  render() {
    return <ShowChart id={this.state.id}/>;
  }
}

我从主页渲染组件ShowChart,并将this.state.id作为一个道具传递。ShowChart是一个带有redux connect()的组件。

代码语言:javascript
运行
复制
class ShowChart extends React.Component {
  constructor() {
    super();
    this.state = {color: "red"};
  }
  componentDidMount(){
    //API_Call(this.props.id)
    //This API call uses props.id as parameter and redux store provides the API response
  }
  render() {
    return (<div>{API_response}</div>);
  }
}
function mapStateToProps(state) {
    return {
        //
    };
}
function mapDispatchToProps(dispatch) {
    return {
        //    
    }
}
export default connect(mapStateToProps, mapDispatchToProps)(ShowChart)

我希望每当Home组件的值'id‘发生变化时,ShowChart就会触发它的componentDidMount。但它似乎并不是这样的。我尝试了getDerivedStateFromProps()和componentDidUpdate()方法,但都没有成功。欢迎任何解决方案或建议。

EN

Stack Overflow用户

回答已采纳

发布于 2021-05-02 22:01:16

显然,我没有正确使用生命周期方法。

代码语言:javascript
运行
复制
componentDidUpdate(prevProps) {
    if (this.props.id !== prevProps.id) {
       //API_Call(this.props.id)
    }
}

这就解决了问题。感谢大家。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67356996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档