alova icon indicating copy to clipboard operation
alova copied to clipboard

[Feature Request] 可以支持 solidjs 的的使用吗

Open Yanren1225 opened this issue 2 years ago • 9 comments

你在什么情况下,需要这个功能解决什么问题?

可以支持 solidjs 的的使用吗?

你期望的 API 是什么样子的?

solidjs 与 react 有着相似的响应式使用方法,应该可以很方便的支持

Yanren1225 avatar Jun 14 '23 13:06 Yanren1225

solidjs在我们的计划中,但短期内暂时还没计划支持solidjs。 从使用者的角度来说可能写一个statesHook就可以了,但从alova的角度来说,工作量是比较大的,还需要通过单元测试,typescript类型兼容,scene请求策略hooks的兼容和测试。

如果需要,你可以试试自定义statesHook,可以快速满足你的需求。 不着急的话,也可以稍微耐心等待我们提供。

JOU-amjs avatar Jun 14 '23 23:06 JOU-amjs

请问这个已经实现了吗?

可以提供一个简单的statesHook 吗?这样对于初次接触Alova 的用户会更友好一点。

tendant avatar Jul 12 '23 04:07 tendant

@tendant 目前还没有实现solidjs的statesHook,可以期待一下哦

JOU-amjs avatar Jul 18 '23 08:07 JOU-amjs

有人愿意贡献你的一份力量吗? 请阅读贡献指南

JOU-amjs avatar Jul 29 '23 06:07 JOU-amjs

solid太小众了吧,玩这种新框架的,我不信没能力自己写statesHook

wintsa123 avatar Aug 11 '23 14:08 wintsa123

这有一个简单的实现,没有完整测试,不保证100%可用,也不提供售后

const solidJsHook = {
  create: (data) => createSignal(data),
  export: (states) => states[0],
  dehydrate: (state: any) => state(),
  update: (newVal, states) => {
    Object.keys(newVal).forEach((key) => {
      states[key][1](newVal[key]);
    });
  },
  effectRequest({ handler, removeStates, immediate, watchingStates }) {
    onCleanup(removeStates);

    immediate && handler();

    let timer: any;
    (watchingStates || []).forEach((state, i) => {
      createEffect(() => {
        state();
        timer && clearTimeout(timer);
        timer = setTimeout(() => {
          handler(i);
          clearTimeout(timer);
          timer = undefined;
        }, 8);
      });
    });
  },
};

thinke5 avatar Nov 27 '23 06:11 thinke5

@thinkeW 非常感谢你的贡献啊!🤞 需要使用的朋友可以复制到自己项目里作为自定义statesHook使用。 如果需要作为alova预定义的statesHook并达到可用状态的话,还需要通过单元测试才可以正常投入使用。 如果有兴趣的话,可以在项目目录下新建test/browser/hooks/solid并模仿react的hooks测试用例测试

JOU-amjs avatar Nov 30 '23 03:11 JOU-amjs

solidjs在我们的计划中,但短期内暂时还没计划支持solidjs。 从使用者的角度来说可能写一个statesHook就可以了,但从alova的角度来说,工作量是比较大的,还需要通过单元测试,typescript类型兼容,scene请求策略hooks的兼容和测试。

如果需要,你可以试试自定义statesHook,可以快速满足你的需求。 不着急的话,也可以稍微耐心等待我们提供。

我觉得原生微信小程序可以支持下,其他web框架类似的功能不怎么缺。

1075488066 avatar Jan 15 '24 20:01 1075488066

@1075488066 原生小程序支持计划中,期待一下哦

JOU-amjs avatar Jan 16 '24 09:01 JOU-amjs

[email protected]中已经支持了solid

JOU-amjs avatar Nov 01 '24 15:11 JOU-amjs