上下文

Mitosis 上下文必须:

  • 在自己的文件中创建
  • 文件名必须以context.lite.ts结尾
  • 默认导出必须是一个返回上下文对象的函数

示例:

  1. // simple.context.lite.ts
  2. import { createContext } from '@builder.io/mitosis';
  3. export default createContext({
  4. foo: 'bar',
  5. get fooUpperCase() {
  6. return this.foo.toUpperCase();
  7. },
  8. someMethod() {
  9. return this.fooUpperCase.toLowercase();
  10. },
  11. content: null,
  12. context: {} as any,
  13. state: {},
  14. });

然后,您可以在组件中使用它:

  1. import { setContext, useContext } from '@builder.io/mitosis';
  2. import Context from './simple.context.lite';
  3. export default function ComponentWithContext(props: { content: string }) {
  4. // 使用 `useContext` 访问上下文
  5. const foo = useContext(Context);
  6. // 使用 `setContext` 为上下文提供新值
  7. setContext(Context, {
  8. foo: 'baz',
  9. content() {
  10. return props.content;
  11. },
  12. });
  13. return (
  14. // 还可以使用 `Context.provider` 为上下文提供新值
  15. <Context.Provider value={{ bar: 'baz' }}>{foo.value}</Context.Provider>
  16. );
  17. }