~ Đặt vấn đề: Ta có 1 button có event onClick = function a(), khi đó sẽ bị 1 tình trạng là khi props của button bị thay đổi thì button sẽ bị reRender theo app-comp
~> Sử dụng useCallback để tránh trường hợp → ko bị khởi tạo lại sau mỗi làn app reRender
~> useCallback có 2 tham số:
1: My function
2: Là 1 array dependency, tham số lắng nghe, function chỉ được khởi tạo lại khi có sự thay đổi của variable được truyền vào. mục đích để update lại data.
~> Nếu ko phụ thuộc vào variable thì sẽ để []
Callback in reactjs tsx
const toggleHandle = (name: any) => {
console.log('abc', name);
return 12;
}
<Demo toggle={toggleHandle}></Demo>
//Khi ta render nos like ntn::
/**
* function demo(callback){
* callback('name', 1, 2, 3, 4, 5) //nó có thể return về rất nhiều, tuy nhiên thì bên kia có hứng giá trị đó hay ko
* }
*
* const toggleHandle = (name: any) => {
* console.log('abc', name)
* }
*
*
* demo(toggleHandle)
* //Fill:: abc name
*/
~~~
/**
* Khai báo 1 hàm toggle return void
* @param toggle
* @constructor
*/
//Là một function và return void
export function Demo({toggle}: {toggle: (name: string, title: string) => {}}){
console.log(toggle)
return (
<div onClick={(e) => { //Khi user click thì nó sẽ excuse function toggle()
toggle('name', '123'); //Thời điểm click nó sẽ excuse function toggle() -> khi đó ta sẽ hiểu là fn toggle() đã được thực thi
}}>toggle</div>
)
}
/**
* -> Hiểu đơn giản là khi App.tsx render thì nó sẽ chuyển hết về dạng object
* lúc này 2 file như 2 function -> khi đó việc click excuse sẽ giống như đang run function toggle
* Vaf mình truyền vào trong hàm đó là gì ~ là 1 param ok
*/
Remove Duplicate object in array
const uniqueFn = () => {
constuniqueIds = new Set();
returnabc.filter((item) => {
constisDuplicate = uniqueIds.has(item.id);
if (isDuplicate) {
returnfalse;
}
uniqueIds.add(item.id);
returntrue;
});
};
console.log(uniqueFn());
✅useEffect
Một số lưu ý nhỏ:
**Tránh reRender component trong reactjs, → dùng useMemo
(Khi click vào 1 component không liên quan, cũng làm cho component reRender)
props: {name, age}
const user = {name, age}
useEffect(() => //do something, [user])
->
const user = useMemo(() => {name, age}, [name, age]);
useEffect(() => //do something, [user])
Want to print your doc? This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (