Closed Segu-g closed 3 years ago
issueと詳細、ありがとうございます!面白い現象だと思いました。
immerを使ってpatchを作っているので、patchを使う部分もimmerのものを使うのが良いかなと思いました。 applyPatches_はexportされていないとのことなので、(あまりやりたくないですが)該当コードを抜き出して使うとかでしょうか。 immer側に理由を伝えて、exportできないか相談しても良いかもです。 もしくはrft~にissueを建てるとかでしょうか・・・。
不具合の内容
undefinedを値として持つプロパティは
immer
のproduceWithPatches
関数ではundefined
を持つプロパティとして判定されるためOperationはreplace
になる。しかしrfc6902
ではundefined
値を持つプロパティはプロパティが存在しないと判定される(obj.hasOwnProperty("a") && obj.a != undefined
)為replace
命令は不正となってしまう。現象・ログ
undefined値のプロパティに対して代入するようなコマンドを実行すると、undoCommandsには操作が記録されるがstateではundefined値は更新されていない。
再現手順
期待動作
undefined値に対しても正しく記録が適応される。
VOICEVOXのバージョン
main最新 c7275738c6eef347c493f8beab19162424dde160
OSの種類/ディストリ/バージョン
その他
immerのapplyPatches_という内部関数が使えれば良さそう