跳到主要内容

2 篇博文 含有标签「Resources」

Resources are a collection of methods for a given data model

查看所有标签

v0.9:DevTools、Resource.extend 与清理遗留 API

· 阅读需 8 分钟
Nathaniel Tucker
Creator of Reactive Data Client

本次发布聚焦于开发者体验:在开发模式下显示的 devtools 按钮、更好的 DevTools 历史记录,以及 controller.expireAll() 和 controller.fetchIfStale() 等新的 controller 方法。

Resource.extend() 提供了三种强大的方式来自定义 resource——添加新的 endpoint、覆盖已有的 endpoint,或从基础 endpoint 派生。

const UserResource = createResource({
path: '/users/:id',
schema: User,
}).extend('current', {
path: '/users/current',
});
迁移指南

破坏性变更:

v0.2 Controller.fetch、异步 getHeaders、Collection

· 阅读需 6 分钟
Nathaniel Tucker
Creator of Reactive Data Client

Collection 让数组和对象可以通过 push 或 unshift 新成员来轻松扩展。它的名字来自 Backbone Collections。

Collection 现在是 Resource.getList 的默认 schema。

import { useController } from '@data-client/react';
import { TodoResource } from './TodoResource';

export default function CreateTodo({ userId }: { userId: number }) {
  const ctrl = useController();
  const handleKeyDown = async e => {
    if (e.key === 'Enter') {
      ctrl.fetch(TodoResource.getList.push, {
        userId,
        title: e.currentTarget.value,
        id: Math.random(),
      });
      e.currentTarget.value = '';
    }
  };
  return (
    <div className="listItem nogap">
      <label>
        <input type="checkbox" name="new" checked={false} disabled />
        <input type="text" onKeyDown={handleKeyDown} />
      </label>
    </div>
  );
}
结果

升级相当简单,因为我们引入了 @data-client/rest/next 和 @data-client/react/next,以便渐进式地采用本版本中变更的新 API。这使得实际的升级只是简单地重命名一下导入路径。

其他亮点包括

完整细节请继续阅读: