浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

reactにおけるletとspliceの相性が超絶悪い件

変数定義の時に使うlet・constですが、stateの更新の時に

少し差異があることに気が付きました。

例えば、state上に配列があってその配列の中の一つを

spliceを使って除去したとする。

配列の中身は以下のとおり ↓

arr ["john", "mile", "yuka"]

これをletで定義した配列上で処理をする

let arr = this.state.itemList;
arr.splice(1,1);
this.setState({ itemList: arr });

すると以下の結果になる。

arr ["mile", "yuka"]

spliceで1番目を指定している。本来であれば”mile”が消えていないといけないのに、

ここでは”john”が消えてしまっている。

letは再代入が許されているが、ここでは最初のstateを受け取るところにしか明記されていない。

今度はconstで定義したarrで試してみる。

const arr = this.state.itemList;
arr.splice(1,1);
this.setState({ itemList: arr });

結果↓

arr ["john", "yuka"]

今度はきちんと削除できている。ちなみにconstは代入が許されていないが

配列処理は普通に処理できる模様。これがバグなのか自分がこれらの仕様を

理解していないのかいずれにしてもletとspliceの相性がなぜ悪いかは永遠のナゾ。

  • この記事いいね! (0)