this.props和prevProps相等

问题描述 投票:1回答:2

里面componentDidUpdate,当道具的变化是不会触发警报。

您可以运行codePen代码(https://codepen.io/anon/pen/BMmqKe?editors=1011

const state = observable({
  isOpen: false
})

state.close = function () {
  state.isOpen = false
}

state.open = function () {
  state.isOpen = true
}

const Home = observer(class home extends Component {
  componentDidUpdate(prevProps) {
    if (this.props.store.isOpen !== prevProps.store.isOpen) {
      // this line is not executed
      alert('reset');
    }
  }

  render() {
    return (
      this.props.store.isOpen
      ? <button onClick={this.props.store.close}>close</button>
      : <button onClick={this.props.store.open}>open</button>
    );
  }
})

render(<Home store={state} />, document.getElementById('app'))
reactjs mobx mobx-react
2个回答
1
投票

qazxsw POI和POI qazxsw永远指向同一个qazxsw POI对象,所以this.props.store将始终是相同的两侧的相等操作符。

你也可以使用的prevProps.store运行一些代码时,该组件将因为在观察到的变化的更新。

store

0
投票

你可以改变if语句在你componentDidUpdate():

isOpen
© www.soinside.com 2019 - 2024. All rights reserved.