Saya membuat pengait khusus yang memiliki toogle ketika beberapa negara berubah.
Anda harus bisa melewati status apa pun dalam array.
import { useState, useEffect } from 'react'
const useFlatListUpdate = (dependencies = []) => {
const [toggle, setToggle] = useState(false)
useEffect(() => {
setToggle(t => !t)
}, [...dependencies])
return toggle
}
export default useFlatListUpdate
Dan itu harus digunakan sebagai
const toggleFlatList = useFlatListUpdate([search, selectedField /*, anything */])
Tapi itu memberi saya peringatan berikut
Bereaksi Hook useEffect memiliki elemen spread dalam array dependensinya. Ini berarti kami tidak dapat memverifikasi secara statis apakah Anda telah melewati dependensi yang benar.eslint (react-hooks / exhaustive-deps)
Saya juga punya situasi lain di mana itu tidak berhasil
const useFlatListUpdate = (dependencies = []) => {
const [toggle, setToggle] = useState(false)
useEffect(() => {
setToggle(t => !t)
}, dependencies)
return toggle
}
Ini memberi saya peringatan
Bereaksi Hook useEffect disahkan daftar ketergantungan yang bukan array literal. Ini berarti kami tidak dapat memverifikasi secara statis apakah Anda telah melewati dependensi yang benar.eslint (react-hooks / exhaustive-deps)
Bagaimana saya bisa membuat ini berfungsi tanpa peringatan dan tanpa menonaktifkan eslint?
sumber
useEffect(() => { setToggle(t => !t) }, [dependencies])
Jawaban:
Penggunaan daftar ketergantungan sangat aneh dalam kasus ini.
Saya tidak melihat cara lain selain mengabaikan atau membungkam peringatan itu.
Untuk membungkam peringatan, kita tidak harus menonaktifkan
eslint
sepenuhnya.Anda dapat menonaktifkan aturan khusus ini untuk baris spesifik ini:
sumber