Что такое контролируемые компоненты и неконтролируемые компоненты в ReactJS? Чем они отличаются друг от друга?
103
Что такое контролируемые компоненты и неконтролируемые компоненты в ReactJS? Чем они отличаются друг от друга?
Ответы:
Это относится к компонентам DOM с отслеживанием состояния (элементам формы), и документация React объясняет разницу:
props
и уведомляет изменения через обратные вызовы , какonChange
. Родительский компонент «контролирует» его, обрабатывая обратный вызов и управляя своим собственным состоянием, а также передавая новые значения в качестве свойств контролируемому компоненту. Вы также можете назвать это «тупой компонент».ref
чтобы найти его текущее значение , когда вам это нужно. Это немного больше похоже на традиционный HTML.Большинство нативных компонентов формы React поддерживают как контролируемое, так и неконтролируемое использование:
В большинстве (или во всех) случаях следует использовать контролируемые компоненты .
источник
state
скорее, чемprops
?props
. Неконтролируемый компонент будет использоватьstate
для внутреннего контроля самого значения. Это ключевое отличие.controlled components
(<input type="text" value="value" onChange={handleChangeCallbackFn} />
) по сравнению с традиционным HTML, где элемент ввода обрабатывает свое собственное значение и может быть прочитан черезrefs
вызываемуюuncontrolled components
(<value type="text" />
). Управляемые компоненты управляют своим собственным состоянием черезsetState
родительский компонент или получают его в качестве свойств.defaultValue
через реквизиты, но уведомляет контроллерonBlur
?<Button onClick={() => console.log("clicked")}>Click</Button>
.источник
Управляемый компонент - это компонент, который получает измененное значение от функции обратного вызова, а неуправляемый компонент - это компонент, который имеет значение из DOM. Например, при изменении входного значения мы можем использовать функцию onChange в контролируемом компоненте, а также мы можем получить значение, используя DOM, например ref.
источник