Я пытаюсь создать библиотеку пользовательского интерфейса для (P) React. Репо можно просмотреть здесь .
Функция настройки вызывается для запуска функций createElement / forwardRef. Они настроены так, чтобы переменные разрешались, чтобы к ним можно было получить доступ внутри других файлов. Этот вопрос относится к this и this . Переменные - это живые представления, но почему переменные с функциями не живые представления?
// setup.ts
let forwardRef
let createElement
function setup(createElementIn, { forwardRef : fw }) {
forwardRef = fw
createElement = createElementIn
}
В другой функции он импортируется так
// box.ts
import { forwardRef, createElement } from './setup'
// this works
function Box(props, ref){
console.log('forwardRef', forwardRef) // correct function
return createElement('div', { ...props, ...(ref && ref) })
}
// this does not work because forwardRef is undefined
export forwardRef ? forwardRef(Box) : Box
Окно вызывается так
import { useRef, createElement, forwardRef } from 'react'
import { Box, setup } from 'juhuui'
// this is called only once
setup(createElement, { forwardRef })
function Hello () {
const myRef = useRef(null);
return (<Box ref={myRef}>Hello</Box>)
}
Подскажите, пожалуйста, как мой код можно реструктурировать для работы?