首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在React中调用getDerivedStateFromProps内部的方法

在React中调用getDerivedStateFromProps内部的方法
EN

Stack Overflow用户
提问于 2018-04-05 13:38:20
回答 2查看 25.5K关注 0票数 21

在将react升级到16.3版本之前,我会根据属性中的更改调用一个方法,如下所示:

代码语言:javascript
复制
componentWillReceiveProps(nextProps){
   if(this.props.country.length !== nextProps.country){
    doSomething(); //example calling redux action
    }
}

16.3版本上,componentWillReceiveProps是不安全的,我们必须使用getDerivedStateFromProps。但是,这个方法返回一个对象,我不知道如何从它内部调用方法,就像调用componentWillReceiveProps一样

EN

回答 2

Stack Overflow用户

发布于 2018-06-02 05:54:12

对于这种情况,使用componentDidUpdate对OP来说很好,但我发现自己需要getDerivedStateFromProps,所以我必须将我的自定义函数设为静态函数,并在getDerivedStateFromProps中使用类的名称调用它。如下所示:

代码语言:javascript
复制
componentDidMount() {
    const something = ClassComponentName.runThisFunction();
    this.setState({ updatedSomething: something });
}

static getDerivedStateFromProps(nextProps, prevState) {
    if (nextProps.key !== prevState.key) {
        return { 
            updatedSomething: ClassComponentName.runThisFunction()
        };
    }
    return null;
}

static runThisFunction() {
    //do stuff and return value
}

为了澄清,这是在加载时以及新道具到达时更新组件的状态。这无疑将我带回了我的类型化语言时代。希望它能帮上忙!

票数 9
EN

Stack Overflow用户

发布于 2019-10-09 21:21:28

如果你需要在"getDerivedStateFromProps“中调用一个函数,你可以把这个函数放在构造器的状态中,然后从状态中获取这个函数在"getDerivedStateFromProps”中。

在构造函数中将函数置于状态:

代码语言:javascript
复制
constructor(props){
   super(props);
   this.state = {
      func1:this.func1.bind(this)
   }
}

从getDerivedStateFromProps中的状态获取函数:

代码语言:javascript
复制
getDerivedStateFromProps(props,state){
   return {
       model:state.func1(props.model)
   }
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49664867

复制
相关文章

相似问题

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