簡體   English   中英

反應 setState 不更新用戶界面上的 state

[英]react setState not updating the state on the UI

我有一系列項目。 當我在我的用戶界面中輸入項目編號時,該項目將被添加到數組中並顯示出來。 我在控制台登錄並看到該項目正在添加到數組中,但未顯示在 UI 上。

例如,我目前將數組中的項目 1、2、3、4 作為 [1、2、3、4]。 當我添加 5 時,數組將更新為 [1、2、3、4、5],但 5 未顯示在 UI 上。

這是相關代碼:

export const generateItemsState = (prevState, itemErrors, testItems) => {
   const { project, items, updatedProject, validationErrors } = prevState;
   const newState = {};
   
   if (itemErrors && itemErrors.length) {
      // irelevant
   } else {
      // no item errors
      newState.updatedProject = Object.assign(updatedProject, { items: testItems });
   }
   return newState;
}

setItemsInStateAfterValidation(itemErrors, changedTestItems) {
   const newState = generateItemsState(
      this.state,
      itemErrors,
      changedTestItems
   );

   if (!itemErrors || !itemErrors.length) {
      this.setState(newState, () => {
        this.props.onUpdate(
           this.state.updatedProject
        )
      });
   } else {
      this.setState(newState);
   }
}

請大神指點一下,謝謝!

你改變了 state:

  newState.updatedPorject = Object.assign(updatedProject, { items: testItems });

反應的第一條規則,不要改變 state。它應該是:

  newState.updatedPorject = Object.assign({}, updatedProject, { items: testItems });

或同等學歷:

newState.updatedPorject = { ...updatedPorject, items: testItems }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM