thắc mắc Tại sao ReactJS lại hot đến vậy ạ?

  • Người tạo chủ đề Người tạo chủ đề Celsius
  • Ngày bắt đầu Ngày bắt đầu
Hơi lạc đề một chút nhưng mà em mới học, các thím cho em hỏi, bây giờ 1 dự án FE bằng React và BE bằng Node. FE xong UI và BE xong API thì fetch từ API vào UI do bên nào làm ạ. Em thường chỉ làm FE là thiết kế UI/UX, bây giờ ông BE trong dự án đưa em cái API kêu em fetch vào, rồi handle form, xử lý session đăng nhập các thứ theo cái API có sẵn đấy nên em bị ngợp :((. Với các thím có thể cho em biết trong 1 dự án thực tế thì FE và BE làm những gì không ạ, lần đầu làm dự án thực tế lóng nga lóng ngóng ...
 
Hơi lạc đề một chút nhưng mà em mới học, các thím cho em hỏi, bây giờ 1 dự án FE bằng React và BE bằng Node. FE xong UI và BE xong API thì fetch từ API vào UI do bên nào làm ạ. Em thường chỉ làm FE là thiết kế UI/UX, bây giờ ông BE trong dự án đưa em cái API kêu em fetch vào, rồi handle form, xử lý session đăng nhập các thứ theo cái API có sẵn đấy nên em bị ngợp :((. Với các thím có thể cho em biết trong 1 dự án thực tế thì FE và BE làm những gì không ạ, lần đầu làm dự án thực tế lóng nga lóng ngóng ...
Em thấy thím hiểu sai mấy chỗ
Làm FE bao gồm việc triển khai (implement) UI/UX
Còn thiết kế UI/UX do designer làm (đôi khi FE dev kiêm luôn việc của designer)
Việc triển khai UI/UX thì bao gồm cả việc fetch API và handle form, gửi dữ liệu từ form về BE
 
Hơi lạc đề một chút nhưng mà em mới học, các thím cho em hỏi, bây giờ 1 dự án FE bằng React và BE bằng Node. FE xong UI và BE xong API thì fetch từ API vào UI do bên nào làm ạ. Em thường chỉ làm FE là thiết kế UI/UX, bây giờ ông BE trong dự án đưa em cái API kêu em fetch vào, rồi handle form, xử lý session đăng nhập các thứ theo cái API có sẵn đấy nên em bị ngợp :((. Với các thím có thể cho em biết trong 1 dự án thực tế thì FE và BE làm những gì không ạ, lần đầu làm dự án thực tế lóng nga lóng ngóng ...
FE như chỗ mình xử lí gần hết đống bác bảo r, bh FE đâu phải chỉ cắt html/css nữa đâu, phải fetch api tùm lum. Cứ hiểu đơn giản cái gì phía client thì mình xử lí hết còn phía server thì BE làm

via theNEXTvoz for iPhone
 
Anh em đã ai tìm hiểu mấy cái concurrence hooks của React v18 chưa nhỉ. Đọc thấy ù đầu vãi
Cái suspense với cái function có promise thấy bựa vl. Túm váy function mà promise thì trig:shame:

JavaScript:
    import { fetchData } from './data.js';

    // Note: this component is written using an experimental API

    // that's not yet available in stable versions of React.

    // For a realistic example you can follow today, try a framework

    // that's integrated with Suspense, like Relay or Next.js.

    export default function Albums({ artistId }) {

      const albums = use(fetchData([ICODE]/${artistId}/albums[/ICODE]));

      return (

        <ul>

          {albums.map(album => (

            <li key={album.id}>

              {album.title} ({album.year})

            </li>

          ))}

        </ul>

      );

    }

    // This is a workaround for a bug to get the demo running.

    // TODO: replace with real implementation when the bug is fixed.

    function use(promise) {

      if (promise.status === 'fulfilled') {

        return promise.value;

      } else if (promise.status === 'rejected') {

        throw promise.reason;

      } else if (promise.status === 'pending') {

        throw promise;

      } else {

        promise.status = 'pending';

        promise.then(

          result => {

            promise.status = 'fulfilled';

            promise.value = result;

          },

          reason => {

            promise.status = 'rejected';

            promise.reason = reason;

          },  

        );

        throw promise;

      }

    }


ngoài ra thì xài useTransition cũng khá hay. Tuy nhiên vì mới nên chưa có xài thử.
 
Sửa lần cuối:
Cái suspense với cái function có promise thấy bựa vl. Túm váy function mà promise thì trig:shame:

JavaScript:
    import { fetchData } from './data.js';

    // Note: this component is written using an experimental API

    // that's not yet available in stable versions of React.

    // For a realistic example you can follow today, try a framework

    // that's integrated with Suspense, like Relay or Next.js.

    export default function Albums({ artistId }) {

      const albums = use(fetchData([ICODE]/${artistId}/albums[/ICODE]));

      return (

        <ul>

          {albums.map(album => (

            <li key={album.id}>

              {album.title} ({album.year})

            </li>

          ))}

        </ul>

      );

    }

    // This is a workaround for a bug to get the demo running.

    // TODO: replace with real implementation when the bug is fixed.

    function use(promise) {

      if (promise.status === 'fulfilled') {

        return promise.value;

      } else if (promise.status === 'rejected') {

        throw promise.reason;

      } else if (promise.status === 'pending') {

        throw promise;

      } else {

        promise.status = 'pending';

        promise.then(

          result => {

            promise.status = 'fulfilled';

            promise.value = result;

          },

          reason => {

            promise.status = 'rejected';

            promise.reason = reason;

          },  

        );

        throw promise;

      }

    }


ngoài ra thì xài useTransition cũng khá hay. Tuy nhiên vì mới nên chưa có xài thử.
S e thấy th suspend th react trước warning là k nên dùng, sắp bỏ nhỉ nhưng sang th nextjs thì dùng th dynamic thì nó gần như th suspend + fallback, mà dynamic lại rất qtrong trong nextjs

via theNEXTvoz for iPhone
 
Hơi lạc đề một chút nhưng mà em mới học, các thím cho em hỏi, bây giờ 1 dự án FE bằng React và BE bằng Node. FE xong UI và BE xong API thì fetch từ API vào UI do bên nào làm ạ. Em thường chỉ làm FE là thiết kế UI/UX, bây giờ ông BE trong dự án đưa em cái API kêu em fetch vào, rồi handle form, xử lý session đăng nhập các thứ theo cái API có sẵn đấy nên em bị ngợp :((. Với các thím có thể cho em biết trong 1 dự án thực tế thì FE và BE làm những gì không ạ, lần đầu làm dự án thực tế lóng nga lóng ngóng ...
Liên quan phía client thì dev FE làm hết chứ ko phải mỗi ui ux nữa. Gọi là dev FE
Còn nếu là ui ux gọi là designer rồi
 
S e thấy th suspend th react trước warning là k nên dùng, sắp bỏ nhỉ nhưng sang th nextjs thì dùng th dynamic thì nó gần như th suspend + fallback, mà dynamic lại rất qtrong trong nextjs

via theNEXTvoz for iPhone
Vì cơ chế gọi data bựa bựa vậy nên cũng khó xài. Để fetch data ngoài component nói chung kỹ thuật này là

Render-as-you-fetch​

 
biết mấy cái này hạn chế thằng con re render nhưng lướt nhiều diễn đàn thì nó bảo spam nhiều quá thì lại tốn memory ảnh hưởng performance nên lên voz hỏi xem những case nào xài là hợp lý tối ưu nhất ấy bác
nói lung tung đó, mấy cái func obj tốn ít mem lắm. Mà tốn mem còn hơn tốn compute time
 
biết mấy cái này hạn chế thằng con re render nhưng lướt nhiều diễn đàn thì nó bảo spam nhiều quá thì lại tốn memory ảnh hưởng performance nên lên voz hỏi xem những case nào xài là hợp lý tối ưu nhất ấy bác
cứ gọi ra 1 cái hook là đã tốn memory + deps comparison time rồi nên tối ưu là phải biết hạn chế lúc nào cần lúc nào ko cần dùng hook.
Ko phải cứ function inside là wrap hết bằng useCallback hoặc ko phải cứ có computed value là lại bê useMemo ra để wrap.
 
biết mấy cái này hạn chế thằng con re render nhưng lướt nhiều diễn đàn thì nó bảo spam nhiều quá thì lại tốn memory ảnh hưởng performance nên lên voz hỏi xem những case nào xài là hợp lý tối ưu nhất ấy bác
nguyên tắc thế này thôi.

Nếu 1 function là pure ko có side effect thì move ra ngoài component => ko cần useCallback làm gì.
1 function return từ 1 cái hook ví dụ useCheckData => {calcWithState, ...} nếu calcWithState có side

Effect liên quan đến state, props thì sẽ dùng useCallback. Lý do 1 phần ko rõ component sẽ sử dụng hook ntn. Có thể ném vố dep array của useEffect nên tốt nhất memo.


Tương tự nếu function ơ trong 1 component có side effect và có xài trong 1 cái dep array thì xài. Còn nếu ko có bỏ vào dep array thì thôi khỏi memo làm gì. Căn bản ko nên cố gắng pre optimize nhiều quá trừ phi chậm. Ví dụ render nhiều item cùng lúc pass cái function vào thì có thể useCallback. Còn render 1 2 cái button kiểu Button onClick=fnSideEffect thì thôi khỏi
 
Sửa lần cuối:
Cái suspense với cái function có promise thấy bựa vl. Túm váy function mà promise thì trig:shame:

JavaScript:
    import { fetchData } from './data.js';

    // Note: this component is written using an experimental API

    // that's not yet available in stable versions of React.

    // For a realistic example you can follow today, try a framework

    // that's integrated with Suspense, like Relay or Next.js.

    export default function Albums({ artistId }) {

      const albums = use(fetchData([ICODE]/${artistId}/albums[/ICODE]));

      return (

        <ul>

          {albums.map(album => (

            <li key={album.id}>

              {album.title} ({album.year})

            </li>

          ))}

        </ul>

      );

    }

    // This is a workaround for a bug to get the demo running.

    // TODO: replace with real implementation when the bug is fixed.

    function use(promise) {

      if (promise.status === 'fulfilled') {

        return promise.value;

      } else if (promise.status === 'rejected') {

        throw promise.reason;

      } else if (promise.status === 'pending') {

        throw promise;

      } else {

        promise.status = 'pending';

        promise.then(

          result => {

            promise.status = 'fulfilled';

            promise.value = result;

          },

          reason => {

            promise.status = 'rejected';

            promise.reason = reason;

          }, 

        );

        throw promise;

      }

    }


ngoài ra thì xài useTransition cũng khá hay. Tuy nhiên vì mới nên chưa có xài thử.
Ko hiểu gì luôn. Source của fetchData là gì? Một function return promise hay gì khác.
Bro thử ném vào codesandbox hoặc gì đó xem thử
 
nói lung tung đó, mấy cái func obj tốn ít mem lắm. Mà tốn mem còn hơn tốn compute time
cứ gọi ra 1 cái hook là đã tốn memory + deps comparison time rồi nên tối ưu là phải biết hạn chế lúc nào cần lúc nào ko cần dùng hook.
Ko phải cứ function inside là wrap hết bằng useCallback hoặc ko phải cứ có computed value là lại bê useMemo ra để wrap.
nguyên tắc thế này thôi.

Nếu 1 function là pure ko có side effect thì move ra ngoài component => ko cần useCallback làm gì.
1 function return từ 1 cái hook ví dụ useCheckData => {calcWithState, ...} nếu calcWithState có side

Effect liên quan đến state, props thì sẽ dùng useCallback. Lý do 1 phần ko rõ component sẽ sử dụng hook ntn. Có thể ném vố dep array của useEffect nên tốt nhất memo.

Tương tự nếu function ơ trong 1 component có side effect và có xài trong 1 cái dep array thì xài.
ok cảm ơn cảm bác,để e ngâm cứu tiếp
 
Mấy bác có xài React.lazy chưa
Hôm bữa em thử xài caid này. Thấy page load nhanh hơn hẳn:p:p:p

Sent from Xiaomi 2201117TG using vozFApp
 
Mấy bác có xài React.lazy chưa
Hôm bữa em thử xài caid này. Thấy page load nhanh hơn hẳn:p:p:p

Sent from Xiaomi 2201117TG using vozFApp
Thì nó tách file ra khiến bundle nhẹ hơn, nhưng mà không rõ khi bị lỗi kết nối thì như thế nào, và làm sao để tải lại? Và có kết hợp được với React Query không? :(:(
 

Thống kê chủ đề

Ngày tạo
Celsius,
Người trả lời cuối
JavaNeverDie002,
Trả lời
690
Lượt xem
97.276
Quay lại
Lên đầu trang