الفرق ما بينهم كالآتى:اولاً: Git هو version control software يعنى مسئول انه يتابع اى تغيير فى ملفات المشروع بتاعك ويعمل نسخ قبل وبعد التغيير عشان تقدر ترجع ليها لو حصل اي مشكلةثانياً: GitHub هو منصة تقدر تربطها بـGit عشان تخلي النسخ اللى بيعملها تبقى متخزنة onlineغير ان Git بس open source اى حد يقدر يعمل منصة زى GitHub ويستضيف عليها مشاريع Git. معلومة على جنب: اللى عمل Git اسمه Linus Trovalds وهوه ...
المشكلة انك بتعدل الstate كل مرة الcomponent بـrender! افتكر دايما إن الكود اللى مكتوب جوه الfunction مباشرة بيتنفذ كل مرة يحصل re-render (مثلا كل مرة تعدل فى الstate زى المثال ده)وبالتالى لو عايز IsLoading تتغير اول render بس, حطها جوا useEffect زي كده مثلا:functions myComponent (){
const {isLoading, setIsLoading} = useState(false)
useEffect(()=>{
setIsLoading(true)
}, [])
}
لما تستخدم .map لازم اى element تعمله return يكون عنده param اسمه key ولازم يكون مختلف لكل item. يعنى المفروض الlist تبقى كده:<div class="list">
items.map((item, index)=><Item key={item.id} {...item}/>)
</div>حاول ماتخليش ال key هوه هوه الindex (يعنى مثلا key={index}) لان ده هيلخبط الدنيا حاول تخلي فى id مختلف لكل item
اشهر واكتر hook هتستخدمه هو useState ده مثال ليه:function myComponent (){
const {count, setCount} = useState(0)
setCount(count + 1)
}لاحظ انى حطيت الdefault value اللى انا عايزها لـ count كـargument لـ useState اللى هيه 0 يعنى من الا~خر useState هى function تديها القيمة الdefault للvariable بتاعتك تديك الvariable نفسها ومعاها function تطلبها لما تحب تغير القيمة (زى ما انا خليتها 1 بعد ما كانت 0 ...
استخدم Promise.all زي كده:async function testFunction (){
const promise1 = /* some async task*/
const promise2 = /* some async task*/
const promise3 = /* some async task*/
const promises = [promise1, promise2, promise3];
await Promise.all(promises);
return;
}كده كل الpromises هـ run in parallel يعني هيتنفذوا فى نفس الوقت و Promise.all مش هـ resolve إلا لما كل الpromises اللى فى الarray يخلصّ ...
تقدر تستخدم var لو عايز تغير الvariable دى بعد كده زي مثلا:var test = "test string"
test = "another test string"لكن لو استخدمت const مش هتقدر تغير قيمة ال variable دى بعد كدهconst test = "test string"
//this will throw an error
test = "another test string"يتبقى let وهي زى var ولكن اى variable اتعرفّت بlet هتبقى متاحة فى الscope ده بس يعني:function testFunction(){
if (true){
let scopedVariable ...
بنستخدم async/await لما نكون عايزين نوقف تنفيذ باقى الكود لغاية ما تاسك معين يخلص ممكن يكون fetch request او عايزين نقرا JSON content او اى asynchronous task. مثلا:async function fetchData(){
try{
await fetch({/*some options*/})
} catch(err){
//handle an error
}
//this code will NOT run until a response is received from the fetch request
//or an error occurs
}لاحظ ان أى function فيها await لازم ت ...