Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Optimistic writes disappear on rows retained from a derived store's draft

Đã đóng
#3,859 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
70/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
typescript
Lĩnh vực
frontend

Hướng nghiên cứu

Start by examining the store implementation, focusing on how writable derived stores retain rows from drafts and how createOptimisticStore applies updates. Look at the regression tests for #3767 to understand the expected behavior for ordinary writes, then add a similar test case for optimistic writes. The fix should ensure optimistic updates correctly modify retained rows, possibly by copying them as described in the workaround.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Describe the bug

A writable derived store retains a local row across a source refresh:

const [local, setLocal] = createStore<Row[]>(
  draft => [...source(), ...draft.filter(row => row.id === "local")],
  [],
);
const [view, setView] = createOptimisticStore(local);

After the refresh, an action optimistically sets the retained row's value to 1 and waits two seconds. The optimistic view keeps showing 0 throughout the action.

There are no concurrent actions or pending source updates; the setup updates finish before the action starts.

Your Example Website or App

https://s.olid.uk/id/zG2yQHbUQPa-SyUMiPm_pg

Steps to Reproduce the Bug or Issue
  1. Open the playground.
  2. Click Run once. The button creates a local row, refreshes the source, then starts the optimistic action, with 100 ms delays between setup updates.
  3. Observe that Local value stays at 0 during the two-second action.
Expected behavior

The optimistic view should show Local value: 1 while the action is pending, then revert to 0 when the action finishes without persisting the change.

Screenshots or Videos

No response

Platform
  • OS: Linux
  • Browser: Chromium 153.0.8010.12
  • Solid: published preview mizulu/solid2@5c2174c
Additional context

Returning a copy of the retained row (draft.filter(...).map(row => ({ ...row }))) makes the optimistic update appear and revert as expected. Both variants were tested in the browser.

The retained-draft-row pattern is already covered for ordinary writes by the regression tests for #3767. This report concerns optimistic writes over that store.

The playground has Tailwind disabled.

Ngôn ngữ chính
TypeScript
Star
36.1k
Fork
1.1k
Merge trung bình
11 giờ 17 phút
Pull request đã merge (30 ngày)
371

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của solidjs/solid

Tất cả issue của solidjs/solid

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.