跳到主要內容

疑難排解

#redux channel of the Reactiflux Discord community is our official resource for all questions related to learning and using Redux. Reactiflux is a great place to hang out, ask questions, and learn - come join us!

You can also ask questions on Stack Overflow using the #redux tag.

我的檢視不會更新!

簡言之,

  • Reducer 不應變異狀態,它們必須傳回新的物件,否則 React Redux 將看不到更新。
  • 請確定您確實已派送操作。例如,如果您有像 addTodo 這樣的操作建立器,直接呼叫導入的 addTodo() 函式不會有任何作用,因為它只是傳回操作,但並未派送。您需要呼叫 dispatch(addTodo())(如果使用鉤子 API)或 props.addTodo()(如果使用 connect + mapDispatch)。

在 контек或屬性中找不到「store」

若有與「context」相關問題,

  1. 確保頁面上沒有重複 React 實例
  2. 請確定專案中沒有 React Redux 的多個實例/拷貝。
  3. 請確保沒有忘記將根元素或其他祖先元件包覆在 <Provider> 中。
  4. 請確認執行的是最新版本的 React 和 React Redux。

不變數位規則:addComponentAsRefTo(...):只有 ReactOwner 可以有參照。通常表示您嘗試為沒有擁有者的元件新增參照

如果您將 React 用於網頁,通常表示您有 重複的 React。請按照連結的指示修正此錯誤。

單元測試時出現有關 useLayoutEffect 的警告

「useLayoutEffect」於「伺服器」上使用時,ReactDOM 會發出此警告。React Redux 會透過偵測是否在瀏覽器背景中執行來解決此問題。預設情況下,Jest 會定義足夠的瀏覽器環境,因此 React Redux 會認為它是執行於瀏覽器中,進而導致這些警告。

您可以在單一測試檔案中設定 @jest-environment 以避免警告

// my.test.jsx
/**
* @jest-environment node
*/

或使用全域設定

// package.json
{
"name": "my-project",
"jest": {
"testEnvironment": "node"
}
}

參閱 https://github.com/facebook/react/issues/14927#issuecomment-490426131