@eva/fiber-eva
Version:
React EVA是一个让开发同学能够在React技术体系下,利用EVA JS的游戏研发能力,开发动画、游戏类场景的框架。它可以让开发同学用熟悉的JSX和Hooks语法编写动画、游戏场景的代码。
35 lines (30 loc) • 1.06 kB
text/typescript
import {ReactElement} from 'react';
import {FiberRoot} from 'react-reconciler';
import createRenderer from './renderer';
// const containers = new Map<FiberRoot, any>();
function getPublicRootInstance(container: FiberRoot) {
const containerFiber = container.current;
if (!containerFiber.child) {
return null;
}
return containerFiber.child.stateNode;
}
const {createInstance, reconciler} = createRenderer();
// export {createInstance, reconciler};
const Reconciler = {
render(element: ReactElement, container: FiberRoot, props) {
// Create a root Container if it doesnt exist
if (!container._rootContainer) {
container._rootContainer = reconciler.createContainer(container, false);
createInstance(props);
}
return reconciler.updateContainer(element, container._rootContainer, null);
// return getPublicRootInstance(container);
},
unmountComponentAtNode(container: FiberRoot) {
reconciler.updateContainer(null, container._rootContainer, null, () => {
//noop
});
},
};
export default Reconciler;