React 源碼閱讀-11
createRef
// ReactTypes定義的 react 類型
import type {RefObject} from 'shared/ReactTypes';
// an immutable object with a single mutable value
// 具有單個可變值的不可變對象
export function createRef(): RefObject {
const refObject = {
current: null,
};
if (__DEV__) {
Object.seal(refObject);
}
return refObject;
}
createRef
源碼比較簡短,就是返回一個帶有current
屬性的的refObject
對象.
這也是使用createRef
的時候需要使用const node = this.myRef.current;
Object.seal()
Object.seal()
方法封閉一個對象,阻止添加新屬性並將所有現有屬性標記爲不可配置。當前屬性的值只要可寫就可以改變。
與Object.freeze()
區別
使用Object.freeze()凍結的對象中的現有屬性是不可變的。用Object.seal()密封的對象可以改變其現有屬性。
https://developer.mozilla.org...