ReactJS es-lint: Pernyataan pengembalian tidak boleh mengandung tugas

Aug 20 2020

es-lint gagal untuk kasus ini: Pernyataan return tidak boleh berisi assignment no-return-assign

Saya telah memeriksa utas ini tetapi tidak berhasil: Fungsi panah seharusnya tidak mengembalikan tugas no-return-assign

Apa yang dapat saya lakukan di sini untuk memenuhi es-lint?

Variabel Status Saya

const [monthlyIncidents, setMonthlyIncidents] = useState([
    // monthlyIncidents[0] -> January ... monthlyIncidents[11] -> December
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
  ])

Bagaimana Saya Memperbarui Status

setMonthlyIncidents((prevIncidents) => {
   return { ...prevIncidents, [incidentMonth]: monthlyIncidents[incidentMonth] += 1 }
})

Jawaban

1 DrewReese Aug 20 2020 at 13:17

Dugaan saya adalah melihat += 1sebagai tugas (yang kebetulan juga merupakan mutasi negara).

Anda mungkin bisa bertahan hanya dengan menambahkan satu ke kondisi saat ini. Ini kemungkinan besar akan mengubah array Anda menjadi sebuah objek, jadi berhati-hatilah.

setMonthlyIncidents((prevIncidents) => {
  return {
    ...prevIncidents,
    [incidentMonth]: prevIncidents[incidentMonth] + 1,
  }
})

Biasanya dengan pembaruan status seperti ini, lebih disukai untuk memetakan status yang ada ke status berikutnya dan memperbarui elemen. Sepertinya incidentMonthhanya indeks array, jadi Anda bisa mencocokkan insiden dengan indeks. Ini menjamin status tetap berupa array.

setMonthlyIncidents((prevIncidents) =>
  prevIncidents.map((incident, index) =>
    incident + index === incidentMonth ? 1 : 0
  )
);
1 HaroonAzharKhan Aug 20 2020 at 13:40

MENCOBA

setMonthlyIncidents ({... prevIncidents, [incidentMonth]: prevIncidents [incidentMonth] + 1,

}).

Anda hanya perlu tidak menetapkan status saat mengembalikannya. Selain itu, saya benar-benar tidak mengerti mengapa Anda membuat fungsi baru untuk menyetel status? (apa yang dilakukan setStateVariablekail?). Anda juga dapat menonaktifkan es-lint untuk baris tersebut.