簡體   English   中英

React hooks 對象更新在 Safari 瀏覽器上出現奇怪的行為

[英]React hooks object update gets strange behaviour on Safari browser

React hooks 對象更新在 Safari 瀏覽器上出現奇怪的行為(僅在 Safari 瀏覽器上)

const [state, setState] = React.useState({
  show_welcome: true,
  show_inline: false,
  restriction: false,
  request_dp: false,
  prevent_rtl: false,
  lang: "ta"
});

設置狀態

const handleToggle = ({ target }) => {
  setState(s => ({ ...s, [target.name]: !s[target.name] }));
};

有什么東西會破壞 Safari 瀏覽器的對象順序🤔

React hooks 對象更新在 Safari 瀏覽器上出現奇怪的行為

編輯 infallible-keldysh-uolgt

發生這種情況的原因是因為它正在重新渲染您用於鍵的數組,並且鍵的順序與它們在第一次渲染中的順序不同。 您可以通過在第一次返回之前添加console.log(state)來查看這一點。 Safari 在這方面比 Chrome 或 Firefox 更嚴格。

您可以通過在使用數組渲染之前對數組進行排序來解決此問題。

您還可以通過將切換功能更改為以下內容來解決此問題:

const handleToggle = ({ target }) => {
    const tempState = { ...state };
    tempState[target.name] = !tempState[target.name];
    setState(tempState);
  };

暫無
暫無

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

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