/
githubmr
/
facebook-react
Обзор
Документация
Войти
/
githubmr
/
facebook-react
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
status
packages/react-reconciler/src/ReactFiberStack.js
102 строки
2 KB
Héctor Ramos
Drop the year from Facebook copyright headers and the LICENSE file. (#13593)
08 сен 2018, 01:11
Не верифицирован
08 сен 2018, 01:11
b87aabd
Код
Авторство
О чём код?
/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow */ import type {Fiber} from './ReactFiber'; import warningWithoutStack from 'shared/warningWithoutStack'; export type StackCursor<T> = { current: T, }; const valueStack: Array<any> = []; let fiberStack: Array<Fiber | null>; if (__DEV__) { fiberStack = []; } let index = -1; function createCursor<T>(defaultValue: T): StackCursor<T> { return { current: defaultValue, }; } function isEmpty(): boolean { return index === -1; } function pop<T>(cursor: StackCursor<T>, fiber: Fiber): void { if (index < 0) { if (__DEV__) { warningWithoutStack(false, 'Unexpected pop.'); } return; } if (__DEV__) { if (fiber !== fiberStack[index]) { warningWithoutStack(false, 'Unexpected Fiber popped.'); } } cursor.current = valueStack[index]; valueStack[index] = null; if (__DEV__) { fiberStack[index] = null; } index--; } function push<T>(cursor: StackCursor<T>, value: T, fiber: Fiber): void { index++; valueStack[index] = cursor.current; if (__DEV__) { fiberStack[index] = fiber; } cursor.current = value; } function checkThatStackIsEmpty() { if (__DEV__) { if (index !== -1) { warningWithoutStack( false, 'Expected an empty stack. Something was not reset properly.', ); } } } function resetStackAfterFatalErrorInDev() { if (__DEV__) { index = -1; valueStack.length = 0; fiberStack.length = 0; } } export { createCursor, isEmpty, pop, push, // DEV only: checkThatStackIsEmpty, resetStackAfterFatalErrorInDev, };