変数(data(){}からデータを取得すると変数が更新され、データも更新されるという奇妙なjs/vuejsの問題があります。vuejsメソッド変数がデータ変数を更新するのを止める方法
ここはコード例です。これは、ユーザーがプロフィール画像がありませんならば、それはユーザが既にイメージを持っている場合、それはリストに現在の画像を追加し、APIに送信します、axios経由でAPIにイメージ名を送信しますチェック:
addImage (file) {
var URL = 'http://foo.com/api';
var images = this.person.images;
let att = []
if(images.length) {
att = images
att.push(file.name)
}else{
att.push(file.name)
}
axios.post(URL, {
attachements: att
}).then(
// update dom
).catch(err => {})
},
ここで問題となるのは、this.person.images
が最新のイメージリストを取得するために使用していても、更新されてしまうことです。
att.push(file.name)
が実行されたときにif/elseブロックをチェックすると、this.person.images;
も更新されます。 att
を使用して、現在の画像リストを保存してapiに送信します。
this.person.image
を使って情報を取得するにはどうすればよいですか?
私はconst att = this.person.image
を使用できましたが、それ以降はatt
を更新することはできません。ので、あなたがJavaScriptで
私はこれが唯一の解決策であることに驚いています。私は同じことをすることを考えていたが、よりよい方法があると仮定した。ある? – hidar
Javascriptでこの配列関数を見てください、あなたの問題の解決策かもしれません。 https://www.w3schools.com/jsref/jsref_copywithin.asp – Tarek
var images = JSON.parse(JSON.stringify(this.person.images))。簡単な解決策としてこれを使用する –