При работе с компонентами классов в React с использованием TypeScript часто задается вопрос, необходимо ли и обязательно ли определять реквизиты и состояние внутри конструктора. Ответ на этот вопрос зависит от конкретных потребностей вашего компонента. В этом сообщении блога мы рассмотрим, когда и почему использовать конструктор для определения свойств и состояния, а также плюсы и минусы различных подходов.
1. Инициализация состояния на основе реквизита:
Если состояние зависит от реквизита или вам нужно выполнить дополнительную логику при инициализации состояния, лучшим выбором будет конструктор.
2. Установка значений начального состояния:
Если вы хотите установить начальное состояние компонента, традиционным способом сделать это является конструктор.
Пример:
interface IMyComponentProps { initialCount: number; } interface IMyComponentState { count: number; } class MyComponent extends React.Component{ constructor(props: IMyComponentProps) { super(props); this.state = { count: props.initialCount, }; } render() { return Count: {this.state.count}; } }
1. Простая инициализация состояния:
Если состояние несложное и не зависит от реквизита, вы можете использовать прямую инициализацию состояния без конструктора.
2. Нет необходимости в сложной логике:
Если вам не нужно выполнять дополнительную логику, связанную с реквизитами или состоянием, вы можете установить состояние непосредственно на уровне класса.
Пример:
interface IMyComponentProps { message: string; } interface IMyComponentState { count: number; } class MyComponent extends React.Component{ state: IMyComponentState = { count: 0, }; render() { return Count: {this.state.count}; } }
Преимущества:
Недостатки:
Преимущества:
Недостатки:
Оба подхода верны и зависят от сложности вашего компонента и конкретных потребностей. В современном кодировании React многие разработчики предпочитают более простой подход прямой инициализации, если он соответствует их потребностям.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3