第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在React中,如果狀態(tài)不影響渲染,是否可以在setState之后跳過(guò)重新渲染?

在React中,如果狀態(tài)不影響渲染,是否可以在setState之后跳過(guò)重新渲染?

largeQ 2023-07-20 09:51:05
例如,假設(shè)我有一個(gè)用于發(fā)出 API 請(qǐng)求的鉤子:function useApi(...) {  const [state, setState] = useState({ fetching: false });  useEffect(() => {    setState({ fetching: true });    fetch(...)      .then(() => setState({ fetching: false }));  }, [...]);  return { fetching: state.fetching };}有時(shí), 的狀態(tài)useApi會(huì)影響渲染:function Foo() {  const { fetching } = useApi(...);  if (fetching) {    return 'Loading';  }  return 'Foo';}其他時(shí)候,它不會(huì)影響渲染:function Bar() {  useApi(...);  return 'Bar';}當(dāng)setStateinuseApi不影響渲染時(shí),是否可以避免重新渲染組件?我知道這不會(huì)對(duì)性能產(chǎn)生太大影響,但很高興知道這是否可行。
查看完整描述

1 回答

?
鴻蒙傳說(shuō)

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

您可以創(chuàng)建一個(gè)boolean標(biāo)志來(lái)確定是否要useApi及時(shí)更改掛鉤狀態(tài)。


const { fetching } = useApi(..., flag);

然后是內(nèi)useApi鉤:


function useApi(..., flag) {

  const [state, setState] = useState({ fetching: false });


  useEffect(() => {

    flag && setState({ fetching: true });


    fetch(...)

      .then(() => {

         flag && setState({ fetching: false }));

         // do other stuff

      });

  }, [...]);


  return { fetching: state.fetching };

}


查看完整回答
反對(duì) 回復(fù) 2023-07-20
  • 1 回答
  • 0 關(guān)注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)