首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getDerivedStateFromProps prevState为空

getDerivedStateFromProps prevState为空
EN

Stack Overflow用户
提问于 2019-02-05 22:11:28
回答 1查看 870关注 0票数 0

getDerivedStateFromProps内部,prevState在初始加载时为null。请在下面找到代码示例:

代码语言:javascript
复制
class extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            pathname: props.location.pathname,
            search: props.location.search,
        };
    }
    static getDerivedStateFromProps(nextProps, prevState) {
        // prevState is null
        const {
            location: { pathname, search },
        } = nextProps;
        if (
            pathname !== prevState.pathname ||
            search !== prevState.search
        ) {
            return {
                pathname,
                search,
            };
        }
        return null;
    }
    componentDidUpdate(prevProps, prevState) {
        if (
            prevState.pathname !== this.state.pathname ||
            prevState.search !== this.state.search
        ) {
            // Perform some operation here
        }
    }
    render() {
        return <SomeComponent {...this.props} />;
    }
};

getDerivedStateFromProps -> https://reactjs.org/docs/react-component.html#static-getderivedstatefromprops

EN

回答 1

Stack Overflow用户

发布于 2019-02-05 23:23:27

这似乎是不正确的。请看下面的工作示例:

代码语言:javascript
复制
class Foo extends React.Component {
    constructor(props) {
      super(props)
      this.state = {
        bar: 1
      }
    }
    
    static getDerivedStateFromProps(props, state) {
      console.log("State", state)
      return null
    }
    
    render() {
      return <div>Hello</div>
    }
}

ReactDOM.render(<Foo />, document.querySelector("#root"))
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root" />

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

https://stackoverflow.com/questions/54536300

复制
相关文章

相似问题

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