docs говорит:Почему componentDidMount в компоненте более высокого порядка называется более одного раза?
Вызывается один раз, только на клиенте (не на сервере), немедленно после первоначального рендеринга происходит.
Теперь, когда я пытаюсь создать более высокий компонент порядка:
import React from 'react';
import { connect } from 'react-redux';
function wrap(Wrapped) {
class Wrapper extends React.Component {
componentDidMount() {
// I will place some reusable functionality here which need to
// be called once on mounted.
console.log('wrapper component mounted');
}
render() {
return <Wrapped {...this.props}/>
}
}
return Wrapper;
}
class Wrapped extends React.Component {
componentDidMount() {
console.log('wrapped component mounted');
}
render() {
return <div></div>;
}
}
connect()(wrap(Wrapped));
Теперь, каждый раз, когда какие-либо изменения происходят в реквизите, консоль будет печатать это:
'wrapped component mounted'
'wrapper component mounted'
Если я удалите Wrapper
, он будет печатать только один раз (когда установлен в в первый раз):
`wrapped component mounted`
Итак, почему компонент ComponidMount в компоненте более высокого порядка называется более одного раза?
connect() (wrap (Wrapper)); <- replace with Wrapped –
@ffxsam Извините, если я не понимаю ваш комментарий правильно, мой английский не так уж хорош. Но если я не ошибаюсь, когда эти компоненты ('Wrapper' и' Wrapped') уже установлены, 'componentDidMount' не будет вызываться снова, если он не размонтирован. И я имею в виду, что эти два 'componentDidMount' всегда вызываются, когда реквизит изменяется. –
О, извините! Я пропустил часть изменений в реквизитах, в результате чего «componentDidMount» снова загорелся. Очень странно. – ffxsam