ReactJS es-lint: Pernyataan pengembalian tidak boleh mengandung tugas
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
Dugaan saya adalah melihat += 1
sebagai 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 incidentMonth
hanya 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
)
);
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 setStateVariable
kail?). Anda juga dapat menonaktifkan es-lint untuk baris tersebut.