applyPatches produces same result, but should it also preserve identity?
Mantenedores costumam responder em até 4 dias
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 25/100
- Tipo de issue
- Funcionalidade
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Estagnada
- Stack de tecnologia
- javascript
- Domínio
- frontend
Direção de pesquisa
Comece com a reprodução vinculada no CodeSandbox e compare o comportamento de identidade de produce e applyPatches para o exemplo de unshift. Revise as operações replace e add geradas para items e, em seguida, determine se preservar a identidade dos objetos e fornecer informações suficientes sobre os índices deslocados são requisitos pretendidos. Considera-se concluído quando houver uma decisão documentada ou um escopo de implementação acordado.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
🙋♂ Question
Consider the following code:
https://codesandbox.io/s/immer-sandbox-forked-t7ghd9?file=/src/index.ts
While patchedState is indeed deep equal to producedState, there is a difference in that produce preserves object identity, but applyPatches does not.
Is this a property that would be useful? I arrived at this during a different route, which may be my real question: when an unshift happens, instead of an add op for path ["items", 0], which I expected, instead the patches include a replace op for the first two items in the array, and then an add op for position ["items", 2]. Applying these patches will result in object identity being broken.
I am experimenting with using Immer for change tracking, and this makes life more complicated: I want to track whether I need to update paths if their indices have shifted, but I don't get sufficient information from the patch to determine that.
Link to repro
https://codesandbox.io/s/immer-sandbox-forked-t7ghd9?file=/src/index.ts
Environment
We only accept questions against the latest Immer version.
- Immer version: 9.0.12
- Occurs with
setUseProxies(true) - Occurs with
setUseProxies(false)(ES5 only)
- Linguagem predominante
- JavaScript
- Estrelas
- 29k
- Forks
- 905
- Merge médio
- 3d 16h
- PRs com merge (30d)
- 22
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de immerjs/immer
-
Shrinking an array with `length =` and growing it back loses the patches for the truncated indicesTalvez já em andamento @RClaudiuM assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 4 dias
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 35/100
Mantenedores costumam responder em até 4 dias
-
Docs: Chinese (zh-CN) website translation is outdated vs English docsTalvez livre de novo @lijiayou0728 assumiu há 91 dias e não há nenhum pull request aberto. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
immerjs/immer#1242 · 5 comentários ·
Mantenedores costumam responder em até 4 dias
-
question
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
Mantenedores costumam responder em até 4 dias
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
immerjs/immer#1217 · 1 comentário ·
Mantenedores costumam responder em até 4 dias
Todas as issues de immerjs/immer
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Automattic/node-canvas#2633 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
capricorn86/happy-dom#2594 ·
Mantenedores costumam responder em até 1 dia
-
Decoding tag 1 (epoch date) with an 8-byte integer throws "Cannot mix BigInt and other types"Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 79/100
microsoft/monaco-editor#5575 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
Mantenedores costumam responder em até 1 dia