По мере того, как мое приложение становится все больше и больше, в моей голове все больше обсуждается вопрос об управлении состоянием компонента. У меня есть большой родительский компонент, который включает в себя несколько дочерних компонентов, поэтому каждый из них отображает определенный набор данных. До сих пор в других компонентах я строго обновлял только родительское состояние и вообще не дублировал состояние, как я читал в документах и т. Д. .. Как и сейчас, мои дети рендерит по несколько входов каждый и обновляет родительский объект состояния. Вопрос - это правильно, или я должен дублировать некоторые родительские состояния в моих дочерних элементах, чтобы входные данные использовали их напрямую, а действие onBlur обновляет родительский элемент? Преимущество состоит в том, что он будет отображать родительский элемент только один раз в onBlur, так как он в данный момент обновляет непосредственно родительское состояние, которое он отображает при каждом вводе пользователем.
Я пробовал оба случая, и производительность с использованием профилировщика реакциибольше для идеи дублирующего состояния - только потому, что родительский модуль рендерится только один раз, а не на каждом пользовательском вводе onchange. Вот почему я хочу спросить, если что-то не так. Каждый другой маленький компонент, который является частью большого, является PureComponent и не выполняет бесполезный рендеринг.
class TestParent extends React.Component {
constructor(props) {
super(props);
this.state = {
testObject: {
...many properties
}
};
}
onChange = (evt) => {
thi.setState({
testObject: { ...testObject, [evt.target.id]: evt.target.value
})
}
render(){
<ChildComponent1 onChange={this.onChange} prop1={state.testObject.value1} prop2={state.testObject.value2}
prop3={state.testObject.value3}> </ChildComponent1>
<ChildComponent2 onChange={this.onChange} prop4={state.testObject.value4}> </ChildComponent2>
<ChildComponent3 onChange={this.onChange} prop5={state.testObject.value5}> </ChildComponent3>
<ChildComponent6 onChange={this.onChange} prop6={state.testObject.value6}> </ChildComponent4>
<ChildComponent7 onChange={this.onChange} prop7={state.testObject.value7}> </ChildComponent7>
<textbox value={this.state.testObject} />
}
class ChildComponent1 extends React.PureComponent {
constructor(props) {
super(props);
}
}
render(){
<Input onChange={this.props.onChange} value={this.props.prop1}</Input>
<Input onChange={this.props.onChange} value={this.props.prop2}> </Input>
<Input onChange={this.props.onChange} value={this.props.prop3}> </Input>
}