Каков наилучший способ сравнить множество prevProps и nextProps в Reactjs?

Дочерний компонент получает много обновленных реквизитов от своего родительского компонента. Я хочу обновить дочерний компонент, если в реквизитах есть какое-либо обновление. В настоящее время я делаю это, используя метод жизненного цикла. componentWillReceiveProps который работает, как ожидалось.

componentWillReceiveProps(nextProps){
    if(this.props.scale_length !== nextProps.scale_length){
      const {scale_height,scale_breadth} = this.props
      this.setState({
        torsoScale: new 
            THREE.Vector3(nextProps.scale_length,scale_height,scale_breadth)
      });
    }
if(this.props.scale_breadth !== nextProps.scale_breadth){
      const {scale_height,scale_length} = this.props
      this.setState({
        torsoScale: new 
            THREE.Vector3(scale_length,scale_height,nextProps.scale_breadth)
      });
    }

...
}

Но я буду получать 8+ реквизита в будущем. Как я буду продолжать это. Спасибо.

1 ответ

Я хочу обновить дочерний компонент, если в подпорках есть какое-либо обновление.

Это то, что React делает по умолчанию! Вы должны работать с его обычными обновлениями компонентов, а не пытаться бороться с ним и решить, стоит ли обновлять вещи самостоятельно.

Ты можешь использовать getDerivedStateFromProps для этого, но, возможно, есть и лучшие способы, такие как вычисление вектора непосредственно в render метод.

Вот статья с большим количеством подробностей: https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html

Другие вопросы по тегам