我正在浏览 Fabric UI TextField 文档(https://developer.microsoft.com/en-us/fluentui#/controls/web/textfield)。我使用以下两个处理程序尝试了几个 TextField 示例:-
- 改变
- onGetErrorMessage。
我用这两个处理程序(https://codepen.io/nishchay271095/pen/rNyPKYY?editors=1011)尝试了一些实验:-
案例 1. 当使用两个处理程序时,没有任何额外的 TextField 属性,两个处理程序(onChange 和 onGetErrorMessage)都会被调用。
<TextField
label="Controlled TextField"
onChange={onChangeSecondTextFieldValue}
onGetErrorMessage = {onGetErrorMessageHandler}
/>
情况 2。当使用具有“defaultValue”属性的两个处理程序时,两个处理程序(onChange 和 onGetErrorMessage)都会被调用。
<TextField
label="Controlled TextField"
defaultValue = "hello"
onChange={onChangeSecondTextFieldValue}
onGetErrorMessage = {onGetErrorMessageHandler}
/>
案例 3. 当使用具有 TextField 的“值”属性的两个处理程序时,仅调用了 onChange() 处理程序。
<TextField
label="Controlled TextField"
value="hello"
onChange={onChangeSecondTextFieldValue}
onGetErrorMessage = {onGetErrorMessageHandler}
/>
现在,我有以下疑问:-
- 为什么在案例 3 中没有调用 onGetErrorMessage()?
- value 和 defaultValue 属性如何影响这两个处理程序(onChange 和 onGetErrorMessage)的行为?