【发布时间】:2021-06-16 00:29:34
【问题描述】:
我打算构建一个 react 组件库。反应组件是 UI 组件,但应该只实现特定的逻辑。我希望用户能够定义一组用于组成实际组件的原子(基本反应组件)。我的主要目标是使库独立于特定的 UI 组件库,如 MaterialUI、ChakraUI 等。
我的想法是使用 React.Context 来注入这样的组件:
// Button Atom
const Button: FC = ({ children }) => (<button>{children}</button>)
const atoms = { button: Button }
const AtomContext = createContext(atoms);
// "higher" component
const HigherComponent: FC = () => {
const atoms = useContext(AtomContext)
// Logic ...
return (
<atoms.button>click me</atoms.button>
)
}
export default function App() {
return (
<AtomContext.Provider value={atoms}>
<HigherComponent />
</AtomContext.Provider>
);
}
这解决了我的问题。但我不确定这是否是个好主意。有没有更好的方法来注入 UI 依赖项?我的方法可能有什么问题?
【问题讨论】:
标签: javascript reactjs typescript dependency-injection