?✨ Dalam aplikasi JavaScript dan React moden, adalah perkara biasa untuk menghadapi ralat masa jalan yang disebabkan oleh mengakses sifat pada nilai yang tidak ditentukan atau nol, atau kaedah memanggil pada tatasusunan atau objek yang tidak ditentukan. Isu ini boleh mengganggu pengalaman pengguna dan menjadikan penyahpepijatan sebagai mimpi ngeri. Dalam artikel ini, kami akan mengenal pasti isu biasa dan menyediakan konfigurasi ESLint untuk mengurangkannya dengan berkesan. ??
?✨ Dalam projek React atau React Native kami, kerana kami tidak menggunakan TypeScript, kadangkala kami terlupa untuk menulis kod selamat. Kod yang tidak selamat ini boleh membawa kepada banyak isu dalam pengeluaran, seperti apl React Native ranap, pengguna yang mengecewakan dan penyelenggaraan yang merumitkan. Mari kita selami isu-isu biasa ini dan cara menyelesaikannya. ???
Mengakses sifat pada objek yang tidak ditentukan atau batal menyebabkan ralat masa jalan:
const user = undefined; console.log(user.name); // ❌ Runtime Error: Cannot read property 'name' of undefined
const name = user?.name;
const name = user ? user.name : 'Default Name';
const user = { name: 'Default Name' };
Kaedah panggilan seperti .map() atau .filter() pada tatasusunan yang tidak ditentukan menimbulkan ralat:
const items = undefined; items.map((item) => console.log(item)); // ❌ Runtime Error: Cannot read property 'map' of undefined
if (Array.isArray(items)) { items.map(item => console.log(item)); }
const items = someValue || []; items.map(item => console.log(item));
const items = possibleItems ?? [];
Cuba memanggil fungsi yang mungkin tidak ditentukan:
const handler = undefined; handler(); // ❌ Runtime Error: handler is not a function
if (typeof handler === 'function') { handler(); }
const handler = passedHandler || (() => {});
Memusnahkan sifat daripada objek yang tidak ditentukan mengakibatkan ralat:
const user = undefined; console.log(user.name); // ❌ Runtime Error: Cannot read property 'name' of undefined
const name = user?.name;
const name = user ? user.name : 'Default Name';
Mengakses elemen tatasusunan yang tidak ditentukan menyebabkan ralat:
const user = { name: 'Default Name' };
const items = undefined; items.map((item) => console.log(item)); // ❌ Runtime Error: Cannot read property 'map' of undefined
if (Array.isArray(items)) { items.map(item => console.log(item)); }
Menggunakan kaedah tatasusunan seperti .map() atau .filter() pada nilai atau objek yang tidak ditentukan:
const items = someValue || []; items.map(item => console.log(item));
const items = possibleItems ?? [];
const handler = undefined; handler(); // ❌ Runtime Error: handler is not a function
Gagal mengesahkan syarat dengan ketat boleh menyebabkan pepijat, seperti bergantung pada nilai palsu. Contohnya, jika keadaan yang menjangkakan boolean mungkin tersilap menilai jenis lain seperti undefined atau 0:
if (typeof handler === 'function') { handler(); }
const handler = passedHandler || (() => {});
const obj = undefined; const { name } = obj; // ❌ Runtime Error: Cannot destructure property 'name' of undefined
const { name = 'Default Name' } = user || {};
Untuk menangkap isu ini semasa pembangunan, kami boleh memanfaatkan ESLint dengan peraturan tertentu. Di bawah ialah konfigurasi ESLint yang akan membenderakan panggilan tidak selamat dan mencadangkan pembetulan. ?️??
Tambahkan peraturan berikut pada fail konfigurasi .eslintrc.js atau ESLint anda:
const user = undefined; console.log(user.name); // ❌ Runtime Error: Cannot read property 'name' of undefined
Untuk mendayakan peraturan ini, pastikan anda memasang pemalam dan penghurai ESLint yang diperlukan:
const name = user?.name;
Tambah yang berikut pada tetapan anda.json:
const name = user ? user.name : 'Default Name';
Tambahkan skrip npm untuk menjalankan ESLint:
const user = { name: 'Default Name' };
Kemudian, jalankan npm run lint untuk menangkap isu. ?
Dengan melaksanakan peraturan dan amalan ESLint di atas, anda boleh menangkap dan membetulkan panggilan yang tidak selamat sebelum ia menjadi ralat masa jalan. ?? Pendekatan ini akan meningkatkan kebolehpercayaan dan kebolehselenggaraan projek JavaScript dan React anda. ?⚙️✨
Atas ialah kandungan terperinci Mengelakkan Panggilan Tidak Selamat dalam JavaScript dan Projek React dengan ESLint. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!